You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by sb...@locus.apache.org on 2000/03/02 11:23:28 UTC

cvs commit: xml-xalan/src/org/apache/xalan/xslt/trace GenerateEvent.java PrintTraceListener.java SelectionEvent.java TraceListener.java TracerEvent.java

sboag       00/03/02 02:23:27

  Modified:    src      makexpath4j makexslt4j
               src/org/apache/xalan/xpath DataProviderAssociation.java
                        Dispatcher.java DispatcherFactory.java
                        EmptyNodeListImpl.java
                        ExtensionFunctionHandler.java FoundIndex.java
                        FuncBoolean.java FuncCeiling.java FuncConcat.java
                        FuncContains.java FuncCount.java FuncCurrent.java
                        FuncDoc.java FuncDoclocation.java
                        FuncExtElementAvailable.java
                        FuncExtFunctionAvailable.java FuncFalse.java
                        FuncFloor.java FuncFormatNumber.java
                        FuncGenerateId.java FuncId.java FuncKey.java
                        FuncLang.java FuncLast.java FuncLoader.java
                        FuncLocalPart.java FuncNamespace.java
                        FuncNormalize.java FuncNormalizeSpace.java
                        FuncNot.java FuncNumber.java FuncPosition.java
                        FuncQname.java FuncRound.java FuncStartsWith.java
                        FuncString.java FuncStringLength.java
                        FuncSubstring.java FuncSubstringAfter.java
                        FuncSubstringBefore.java FuncSum.java
                        FuncSystemProperty.java FuncTranslate.java
                        FuncTrue.java FuncUnparsedEntityURI.java
                        Function.java KeyDeclaration.java
                        MutableNodeList.java MutableNodeListImpl.java
                        NodeCallback.java NodeListImpl.java Process.java
                        SimpleNodeLocator.java XBoolean.java
                        XBooleanStatic.java XLocator.java XNodeSet.java
                        XNull.java XNumber.java XObject.java XPath.java
                        XPathEnvSupport.java XPathException.java
                        XPathFactory.java XPathProcessor.java
                        XPathProcessorException.java
                        XPathProcessorImpl.java XPathSupport.java
                        XPathSupportDefault.java XRTreeFrag.java
                        XSLTJavaClassEngine.java XString.java
               src/org/apache/xalan/xpath/dtm ChunkedIntArray.java DTM.java
                        DTMException.java DTMLiaison.java
                        DTMNodeVector.java DTMProxy.java DTMProxyMap.java
                        IntMap.java IntToObjectMap.java
               src/org/apache/xalan/xpath/res XPATHErrorResourceBundle.java
                        XPATHErrorResources.java
                        XPATHErrorResources_en.java
               src/org/apache/xalan/xpath/xdom XercesLiaison.java
               src/org/apache/xalan/xpath/xml AttList.java BoolStack.java
                        DefaultErrorHandler.java ElemDesc.java
                        FormatterToDOM.java FormatterToHTML.java
                        FormatterToText.java FormatterToXML.java
                        IntStack.java IntVector.java
                        MutableAttrListImpl.java NSInfo.java NameSpace.java
                        NodeVector.java PrefixResolver.java
                        PrefixResolverDefault.java ProblemListener.java
                        ProblemListenerDefault.java QName.java
                        RawCharacterHandler.java StringKey.java
                        StringToStringTable.java
                        StringToStringTableVector.java StringVector.java
                        TreeWalker.java Trie.java WrongParserException.java
                        XMLParserLiaison.java XMLParserLiaisonDefault.java
                        XSLMessages.java XSLResourceBundle.java
               src/org/apache/xalan/xslt AVT.java AVTPart.java
                        AVTPartSimple.java AVTPartXPath.java Arg.java
                        Constants.java Counter.java CountersTable.java
                        DecimalToRoman.java ElemApplyImport.java
                        ElemApplyTemplates.java ElemAttribute.java
                        ElemAttributeSet.java ElemCallTemplate.java
                        ElemChoose.java ElemComment.java ElemCopy.java
                        ElemCopyOf.java ElemDecimalFormat.java
                        ElemElement.java ElemEmpty.java
                        ElemExtensionCall.java ElemFallback.java
                        ElemForEach.java ElemIf.java ElemLiteralResult.java
                        ElemMessage.java ElemNumber.java ElemOtherwise.java
                        ElemPI.java ElemParam.java ElemSort.java
                        ElemTemplate.java ElemTemplateElement.java
                        ElemText.java ElemTextLiteral.java ElemUse.java
                        ElemValueOf.java ElemVariable.java ElemWhen.java
                        ElemWithParam.java ExtensionNSHandler.java
                        FuncDocument.java FuncFormatNumb.java KeyTable.java
                        NodeSortKey.java NodeSorter.java
                        NumeratorFormatter.java Process.java
                        ResultNameSpace.java ResultTreeFrag.java
                        Stylesheet.java StylesheetHandler.java
                        StylesheetRoot.java StylesheetSpec.java
                        TemplateElementContext.java TemplateList.java
                        TreeWalker2Result.java UnImplNode.java
                        VariableStack.java XSLProcessorContext.java
                        XSLProcessorException.java XSLProcessorVersion.java
                        XSLTEngineImpl.java XSLTInputSource.java
                        XSLTProcessor.java XSLTProcessorFactory.java
                        XSLTResultTarget.java
               src/org/apache/xalan/xslt/client XSLTProcessorApplet.java
               src/org/apache/xalan/xslt/trace GenerateEvent.java
                        PrintTraceListener.java SelectionEvent.java
                        TraceListener.java TracerEvent.java
  Removed:     src/org/apache/xalan/xpath UnionContext.java XPointer.java
                        XSpan.java
               src/org/apache/xalan/xpath/dtm DTMtest.java
               src/org/apache/xalan/xslt Expression.java
                        SerializableAttrListImpl.java XMLSourceInfo.java
  Log:
  Added meta tags to class header javadoc and to some functions, made what I could private or package private, removed some dead code. Also fixed regression with Xerces 1.2 where they had changed loadSchema signature which we override to keep them from barf
  
  Revision  Changes    Path
  1.17      +0 -3      xml-xalan/src/makexpath4j
  
  Index: makexpath4j
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/makexpath4j,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- makexpath4j	2000/02/29 21:30:53	1.16
  +++ makexpath4j	2000/03/02 10:21:57	1.17
  @@ -91,10 +91,8 @@
       $(XPATHDIR)$(PATHSEP)XPathProcessorImpl.java \
       $(XPATHDIR)$(PATHSEP)XPathSupport.java \
       $(XPATHDIR)$(PATHSEP)XPathSupportDefault.java \
  -    $(XPATHDIR)$(PATHSEP)XPointer.java \
       $(XPATHDIR)$(PATHSEP)XRTreeFrag.java \
       $(XPATHDIR)$(PATHSEP)XSLTJavaClassEngine.java \
  -    $(XPATHDIR)$(PATHSEP)XSpan.java \
       $(XPATHDIR)$(PATHSEP)XString.java \
   	$(RESDIR)$(PATHSEP)XPATHErrorResources.java \
       $(RESDIR)$(PATHSEP)XPATHErrorResources_en.java \
  @@ -107,7 +105,6 @@
   	$(DTMDIR)$(PATHSEP)DTMNodeVector.java \
   	$(DTMDIR)$(PATHSEP)DTMProxy.java \
   	$(DTMDIR)$(PATHSEP)DTMProxyMap.java \
  -	$(DTMDIR)$(PATHSEP)DTMtest.java \
   	$(DTMDIR)$(PATHSEP)IntMap.java \
   	$(DTMDIR)$(PATHSEP)IntToObjectMap.java
   	
  
  
  
  1.11      +0 -3      xml-xalan/src/makexslt4j
  
  Index: makexslt4j
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/makexslt4j,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- makexslt4j	2000/02/29 21:30:53	1.10
  +++ makexslt4j	2000/03/02 10:21:57	1.11
  @@ -61,7 +61,6 @@
     $(XSLT4JDIR)$(PATHSEP)ElemVariable.java \
     $(XSLT4JDIR)$(PATHSEP)ElemWhen.java \
     $(XSLT4JDIR)$(PATHSEP)ElemWithParam.java \
  -  $(XSLT4JDIR)$(PATHSEP)Expression.java \
     $(XSLT4JDIR)$(PATHSEP)ExtensionNSHandler.java \
     $(XSLT4JDIR)$(PATHSEP)FuncDocument.java \
     $(XSLT4JDIR)$(PATHSEP)FuncFormatNumb.java \
  @@ -71,13 +70,11 @@
     $(XSLT4JDIR)$(PATHSEP)NumeratorFormatter.java \
     $(XSLT4JDIR)$(PATHSEP)Process.java \
     $(XSLT4JDIR)$(PATHSEP)ResultTreeFrag.java \
  -  $(XSLT4JDIR)$(PATHSEP)SerializableAttrListImpl.java \
     $(XSLT4JDIR)$(PATHSEP)Stylesheet.java \
     $(XSLT4JDIR)$(PATHSEP)StylesheetHandler.java \
     $(XSLT4JDIR)$(PATHSEP)StylesheetRoot.java \
     $(XSLT4JDIR)$(PATHSEP)StylesheetSpec.java \
     $(XSLT4JDIR)$(PATHSEP)UnImplNode.java \
  -  $(XSLT4JDIR)$(PATHSEP)XMLSourceInfo.java \
     $(XSLT4JDIR)$(PATHSEP)XSLTProcessor.java \
     $(XSLT4JDIR)$(PATHSEP)XSLTProcessorFactory.java \
     $(XSLT4JDIR)$(PATHSEP)XSLTEngineImpl.java \
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/DataProviderAssociation.java
  
  Index: DataProviderAssociation.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/DataProviderAssociation.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DataProviderAssociation.java	1999/11/08 20:55:26	1.1
  +++ DataProviderAssociation.java	2000/03/02 10:21:58	1.2
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Key to XLocator association class.
    */
   public class DataProviderAssociation
  
  
  
  1.3       +8 -7      xml-xalan/src/org/apache/xalan/xpath/Dispatcher.java
  
  Index: Dispatcher.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/Dispatcher.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- Dispatcher.java	2000/02/25 22:06:53	1.2
  +++ Dispatcher.java	2000/03/02 10:21:58	1.3
  @@ -59,9 +59,10 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Interface for a dispatcher to call an extension.
    */
  -public interface Dispatcher
  +interface Dispatcher
   {
     /**
      * Return an object from an extension.
  @@ -79,12 +80,12 @@
     boolean isFunctionAvailable(String str);
   
     // Atributes on the functions element
  -  public static final String ATTRNAME_NS = "ns";
  -  public static final String ATTRNAME_CLASSID = "classid";
  -  public static final String ATTRNAME_ARCHIVE = "archive";
  -  public static final String ATTRNAME_CODETYPE = "type";
  -  public static final String ATTRNAME_CODEBASE = "codebase";
  -  public static final String ATTRNAME_METHOD = "calls";
  +  static final String ATTRNAME_NS = "ns";
  +  static final String ATTRNAME_CLASSID = "classid";
  +  static final String ATTRNAME_ARCHIVE = "archive";
  +  static final String ATTRNAME_CODETYPE = "type";
  +  static final String ATTRNAME_CODEBASE = "codebase";
  +  static final String ATTRNAME_METHOD = "calls";
   
   }
   
  
  
  
  1.3       +4 -3      xml-xalan/src/org/apache/xalan/xpath/DispatcherFactory.java
  
  Index: DispatcherFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/DispatcherFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DispatcherFactory.java	2000/02/25 22:06:54	1.2
  +++ DispatcherFactory.java	2000/03/02 10:21:59	1.3
  @@ -57,15 +57,16 @@
   package org.apache.xalan.xpath;
   
   import org.w3c.dom.*;
  +
   /**
  + * <meta name="usage" content="internal"/>
    * Create a dispatcher for calling an extension.
    */
  -
  -public interface DispatcherFactory
  +interface DispatcherFactory
   {
     /**
      * Create a dispatcher.
      */
  -  public Dispatcher create(Element extensionElem, Element fallbackElem);
  +  Dispatcher create(Element extensionElem, Element fallbackElem);
   }
   
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/EmptyNodeListImpl.java
  
  Index: EmptyNodeListImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/EmptyNodeListImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- EmptyNodeListImpl.java	2000/02/13 16:42:41	1.1
  +++ EmptyNodeListImpl.java	2000/03/02 10:21:59	1.2
  @@ -4,6 +4,7 @@
   import org.w3c.dom.NodeList;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Class to protect a MutableNodeListImpl from being written to.  Really a 
    * debugging class.
    */
  
  
  
  1.11      +1 -0      xml-xalan/src/org/apache/xalan/xpath/ExtensionFunctionHandler.java
  
  Index: ExtensionFunctionHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/ExtensionFunctionHandler.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ExtensionFunctionHandler.java	2000/02/24 21:24:52	1.10
  +++ ExtensionFunctionHandler.java	2000/03/02 10:21:59	1.11
  @@ -69,6 +69,7 @@
   
   
   /**
  + * <meta name="usage" content="internal"/>
    * Class handling an extension namespace for XPath. Provides functions
    * to test a function's existence and call a function
    *
  
  
  
  1.2       +3 -2      xml-xalan/src/org/apache/xalan/xpath/FoundIndex.java
  
  Index: FoundIndex.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FoundIndex.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FoundIndex.java	1999/11/08 20:55:29	1.1
  +++ FoundIndex.java	2000/03/02 10:21:59	1.2
  @@ -57,12 +57,13 @@
   package org.apache.xalan.xpath;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Class to let us know when it's time to do 
    * a search from the parent because of indexing.
    */
  -public class FoundIndex extends RuntimeException
  +class FoundIndex extends RuntimeException
   {
  -  public FoundIndex()
  +  FoundIndex()
     {
     }
   }
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncBoolean.java
  
  Index: FuncBoolean.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncBoolean.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncBoolean.java	1999/11/28 04:25:05	1.2
  +++ FuncBoolean.java	2000/03/02 10:21:59	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Boolean() function.
    */
   public class FuncBoolean extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncCeiling.java
  
  Index: FuncCeiling.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncCeiling.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncCeiling.java	1999/11/28 10:26:14	1.3
  +++ FuncCeiling.java	2000/03/02 10:21:59	1.4
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Ceiling() function.
    */
   public class FuncCeiling extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncConcat.java
  
  Index: FuncConcat.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncConcat.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncConcat.java	1999/11/28 10:26:14	1.2
  +++ FuncConcat.java	2000/03/02 10:22:00	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Concat() function.
    */
   public class FuncConcat extends Function
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncContains.java
  
  Index: FuncContains.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncContains.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FuncContains.java	1999/11/08 20:55:31	1.1
  +++ FuncContains.java	2000/03/02 10:22:00	1.2
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Contains() function.
    */
   public class FuncContains extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncCount.java
  
  Index: FuncCount.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncCount.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncCount.java	2000/02/29 15:32:19	1.4
  +++ FuncCount.java	2000/03/02 10:22:00	1.5
  @@ -61,6 +61,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Count() function.
    */
   public class FuncCount extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncCurrent.java
  
  Index: FuncCurrent.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncCurrent.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncCurrent.java	2000/01/05 23:05:24	1.4
  +++ FuncCurrent.java	2000/03/02 10:22:00	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the current() function.
    */
   public class FuncCurrent extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncDoc.java
  
  Index: FuncDoc.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncDoc.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncDoc.java	2000/01/05 23:05:24	1.3
  +++ FuncDoc.java	2000/03/02 10:22:00	1.4
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Doc() function.
    */
   public class FuncDoc extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncDoclocation.java
  
  Index: FuncDoclocation.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncDoclocation.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncDoclocation.java	1999/11/28 10:26:14	1.3
  +++ FuncDoclocation.java	2000/03/02 10:22:01	1.4
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the proprietary document-location() function, which returns 
    * a node set of documents.
    */
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncExtElementAvailable.java
  
  Index: FuncExtElementAvailable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncExtElementAvailable.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncExtElementAvailable.java	2000/02/24 21:24:52	1.2
  +++ FuncExtElementAvailable.java	2000/03/02 10:22:01	1.3
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.xml.PrefixResolver;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the ExtElementAvailable() function.
    */
   public class FuncExtElementAvailable extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncExtFunctionAvailable.java
  
  Index: FuncExtFunctionAvailable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncExtFunctionAvailable.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncExtFunctionAvailable.java	2000/02/24 21:24:52	1.2
  +++ FuncExtFunctionAvailable.java	2000/03/02 10:22:01	1.3
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.xml.PrefixResolver;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the ExtFunctionAvailable() function.
    */
   public class FuncExtFunctionAvailable extends Function
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncFalse.java
  
  Index: FuncFalse.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncFalse.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FuncFalse.java	1999/11/08 20:55:34	1.1
  +++ FuncFalse.java	2000/03/02 10:22:01	1.2
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the False() function.
    */
   public class FuncFalse extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncFloor.java
  
  Index: FuncFloor.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncFloor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncFloor.java	1999/11/28 10:26:14	1.3
  +++ FuncFloor.java	2000/03/02 10:22:01	1.4
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Floor() function.
    */
   public class FuncFloor extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncFormatNumber.java
  
  Index: FuncFormatNumber.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncFormatNumber.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncFormatNumber.java	2000/01/05 23:05:24	1.4
  +++ FuncFormatNumber.java	2000/03/02 10:22:01	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the FormatNumber() function.
    */
   public class FuncFormatNumber extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncGenerateId.java
  
  Index: FuncGenerateId.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncGenerateId.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncGenerateId.java	1999/11/28 10:26:15	1.3
  +++ FuncGenerateId.java	2000/03/02 10:22:01	1.4
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the GenerateId() function.
    */
   public class FuncGenerateId extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncId.java
  
  Index: FuncId.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncId.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncId.java	2000/01/05 23:05:25	1.4
  +++ FuncId.java	2000/03/02 10:22:02	1.5
  @@ -64,6 +64,7 @@
   import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Id() function.
    */
   public class FuncId extends Function
  
  
  
  1.6       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncKey.java
  
  Index: FuncKey.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncKey.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FuncKey.java	2000/02/23 20:07:13	1.5
  +++ FuncKey.java	2000/03/02 10:22:02	1.6
  @@ -63,6 +63,7 @@
   import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Key() function.
    */
   public class FuncKey extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncLang.java
  
  Index: FuncLang.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncLang.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncLang.java	2000/01/04 23:55:22	1.2
  +++ FuncLang.java	2000/03/02 10:22:02	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Lang() function.
    */
   public class FuncLang extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncLast.java
  
  Index: FuncLast.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncLast.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncLast.java	2000/02/13 16:42:41	1.3
  +++ FuncLast.java	2000/03/02 10:22:02	1.4
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Last() function.
    */
   public class FuncLast extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncLoader.java
  
  Index: FuncLoader.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncLoader.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncLoader.java	2000/03/01 16:47:06	1.3
  +++ FuncLoader.java	2000/03/02 10:22:03	1.4
  @@ -62,6 +62,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Load functions in function table as needed
    */
   public class FuncLoader extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncLocalPart.java
  
  Index: FuncLocalPart.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncLocalPart.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncLocalPart.java	2000/01/05 23:05:25	1.4
  +++ FuncLocalPart.java	2000/03/02 10:22:03	1.5
  @@ -62,6 +62,7 @@
   
   /**
    * Execute the LocalPart() function.
  + * <meta name="usage" content="advanced"/>
    */
   public class FuncLocalPart extends Function
   {
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncNamespace.java
  
  Index: FuncNamespace.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncNamespace.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncNamespace.java	2000/01/05 23:05:25	1.4
  +++ FuncNamespace.java	2000/03/02 10:22:03	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Namespace() function.
    */
   public class FuncNamespace extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncNormalize.java
  
  Index: FuncNormalize.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncNormalize.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncNormalize.java	2000/01/05 23:05:25	1.4
  +++ FuncNormalize.java	2000/03/02 10:22:03	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Normalize() function.
    */
   public class FuncNormalize extends Function
  
  
  
  1.6       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncNormalizeSpace.java
  
  Index: FuncNormalizeSpace.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncNormalizeSpace.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FuncNormalizeSpace.java	2000/02/21 08:14:25	1.5
  +++ FuncNormalizeSpace.java	2000/03/02 10:22:03	1.6
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Normalize-space() function.
    */
   public class FuncNormalizeSpace extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncNot.java
  
  Index: FuncNot.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncNot.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncNot.java	1999/11/28 04:25:06	1.2
  +++ FuncNot.java	2000/03/02 10:22:04	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Not() function.
    */
   public class FuncNot extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncNumber.java
  
  Index: FuncNumber.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncNumber.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncNumber.java	2000/01/05 23:05:25	1.4
  +++ FuncNumber.java	2000/03/02 10:22:04	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Number() function.
    */
   public class FuncNumber extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncPosition.java
  
  Index: FuncPosition.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncPosition.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncPosition.java	1999/11/28 10:26:15	1.2
  +++ FuncPosition.java	2000/03/02 10:22:04	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Position() function.
    */
   public class FuncPosition extends Function
  
  
  
  1.6       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncQname.java
  
  Index: FuncQname.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncQname.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FuncQname.java	2000/01/05 23:05:25	1.5
  +++ FuncQname.java	2000/03/02 10:22:04	1.6
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Qname() function.
    */
   public class FuncQname extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncRound.java
  
  Index: FuncRound.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncRound.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncRound.java	1999/12/02 23:51:48	1.4
  +++ FuncRound.java	2000/03/02 10:22:04	1.5
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Round() function.
    */
   public class FuncRound extends Function
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncStartsWith.java
  
  Index: FuncStartsWith.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncStartsWith.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FuncStartsWith.java	1999/11/08 20:55:39	1.1
  +++ FuncStartsWith.java	2000/03/02 10:22:05	1.2
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the StartsWith() function.
    */
   public class FuncStartsWith extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncString.java
  
  Index: FuncString.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncString.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncString.java	2000/01/05 23:05:25	1.4
  +++ FuncString.java	2000/03/02 10:22:05	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the String() function.
    */
   public class FuncString extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncStringLength.java
  
  Index: FuncStringLength.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncStringLength.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncStringLength.java	2000/01/05 23:05:25	1.4
  +++ FuncStringLength.java	2000/03/02 10:22:05	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the StringLength() function.
    */
   public class FuncStringLength extends Function
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncSubstring.java
  
  Index: FuncSubstring.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncSubstring.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FuncSubstring.java	1999/11/28 10:26:15	1.3
  +++ FuncSubstring.java	2000/03/02 10:22:05	1.4
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Substring() function.
    */
   public class FuncSubstring extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncSubstringAfter.java
  
  Index: FuncSubstringAfter.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncSubstringAfter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncSubstringAfter.java	1999/11/28 10:26:16	1.2
  +++ FuncSubstringAfter.java	2000/03/02 10:22:05	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the SubstringAfter() function.
    */
   public class FuncSubstringAfter extends Function
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncSubstringBefore.java
  
  Index: FuncSubstringBefore.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncSubstringBefore.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FuncSubstringBefore.java	1999/11/28 10:26:16	1.2
  +++ FuncSubstringBefore.java	2000/03/02 10:22:06	1.3
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the SubstringBefore() function.
    */
   public class FuncSubstringBefore extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncSum.java
  
  Index: FuncSum.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncSum.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncSum.java	2000/01/31 17:03:07	1.4
  +++ FuncSum.java	2000/03/02 10:22:06	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Sum() function.
    */
   public class FuncSum extends Function
  
  
  
  1.7       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncSystemProperty.java
  
  Index: FuncSystemProperty.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncSystemProperty.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FuncSystemProperty.java	2000/01/05 23:05:25	1.6
  +++ FuncSystemProperty.java	2000/03/02 10:22:06	1.7
  @@ -66,6 +66,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the SystemProperty() function.
    */
   public class FuncSystemProperty extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncTranslate.java
  
  Index: FuncTranslate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncTranslate.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncTranslate.java	2000/01/05 23:05:25	1.4
  +++ FuncTranslate.java	2000/03/02 10:22:06	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Translate() function.
    */
   public class FuncTranslate extends Function
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncTrue.java
  
  Index: FuncTrue.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncTrue.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FuncTrue.java	1999/11/08 20:55:41	1.1
  +++ FuncTrue.java	2000/03/02 10:22:06	1.2
  @@ -60,6 +60,7 @@
   import java.util.Vector;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the True() function.
    */
   public class FuncTrue extends Function
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/FuncUnparsedEntityURI.java
  
  Index: FuncUnparsedEntityURI.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/FuncUnparsedEntityURI.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- FuncUnparsedEntityURI.java	2000/01/05 23:05:25	1.4
  +++ FuncUnparsedEntityURI.java	2000/03/02 10:22:06	1.5
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the True() function.
    */
   public class FuncUnparsedEntityURI extends Function
  
  
  
  1.4       +10 -0     xml-xalan/src/org/apache/xalan/xpath/Function.java
  
  Index: Function.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/Function.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Function.java	2000/02/21 08:14:25	1.3
  +++ Function.java	2000/03/02 10:22:07	1.4
  @@ -59,6 +59,16 @@
   import org.w3c.dom.*;
   import java.util.Vector;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * This is a superclass of all XPath functions.  This allows two 
  + * ways for the class to be called. One method is that the 
  + * super class processes the arguments and hands the results to 
  + * the derived class, the other method is that the derived 
  + * class may process it's own arguments, which is faster since 
  + * the arguments don't have to be added to an array, but causes 
  + * a larger code footprint.
  + */
   public abstract class Function
   {
     /**
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/KeyDeclaration.java
  
  Index: KeyDeclaration.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/KeyDeclaration.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- KeyDeclaration.java	2000/01/21 16:14:58	1.2
  +++ KeyDeclaration.java	2000/03/02 10:22:07	1.3
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Holds the attribute declarations for the xsl:keys element.
    */
public class KeyDeclaration
{
  public String m_name;
     public XPath m_match;
  
  
  
  1.5       +4 -2      xml-xalan/src/org/apache/xalan/xpath/MutableNodeList.java
  
  Index: MutableNodeList.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/MutableNodeList.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MutableNodeList.java	2000/02/25 22:06:54	1.4
  +++ MutableNodeList.java	2000/03/02 10:22:07	1.5
  @@ -58,7 +58,9 @@
   
   import org.w3c.dom.*;
   import java.util.*;
  +
   /**
  + * <meta name="usage" content="advanced"/>
    * Interface for a modifiable NodeList.
    */
   public interface MutableNodeList extends NodeList
  @@ -88,7 +90,7 @@
      * Copy NodeList members into this nodelist, adding in
      * document order.  If a node is null, don't add it.
      */
  -  public void addNodes(NodeList nodelist);
  +  void addNodes(NodeList nodelist);
   
     /**
      * Copy NodeList members into this nodelist, adding in
  @@ -111,5 +113,5 @@
      * @param v Vector of nodes, presumably containing Nodes
      * @param obj Node object.
      */
  -  public int addNodeInDocOrder(Node node, XPathSupport support);
  +  int addNodeInDocOrder(Node node, XPathSupport support);
   }
  
  
  
  1.9       +2 -1      xml-xalan/src/org/apache/xalan/xpath/MutableNodeListImpl.java
  
  Index: MutableNodeListImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/MutableNodeListImpl.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MutableNodeListImpl.java	2000/01/31 20:52:30	1.8
  +++ MutableNodeListImpl.java	2000/03/02 10:22:07	1.9
  @@ -61,7 +61,8 @@
   import org.apache.xalan.xpath.xml.NodeVector;
   
   /**
  - * Local implementation of NodeList.  This class is for internal use only.
  + * <meta name="usage" content="advanced"/>
  + * Implementation of MutableNodeList.
    */
   public class MutableNodeListImpl extends NodeVector implements MutableNodeList
   {  
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/NodeCallback.java
  
  Index: NodeCallback.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/NodeCallback.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NodeCallback.java	1999/12/13 08:06:01	1.1
  +++ NodeCallback.java	2000/03/02 10:22:08	1.2
  @@ -60,6 +60,7 @@
   import org.xml.sax.SAXException;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * This interface describes a callback that may be executed when 
    * a node is found, if the XPath query can be done in document 
    * order.
  
  
  
  1.2       +4 -0      xml-xalan/src/org/apache/xalan/xpath/NodeListImpl.java
  
  Index: NodeListImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/NodeListImpl.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NodeListImpl.java	1999/11/08 20:55:42	1.1
  +++ NodeListImpl.java	2000/03/02 10:22:08	1.2
  @@ -60,11 +60,15 @@
   import java.util.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Local implementation of NodeList.  This class is for internal use 
    * for the xpath package only.
    */
   public class NodeListImpl extends Vector implements NodeList
   {
  +  /**
  +   * Construct a NodeListImpl.
  +   */
     public NodeListImpl() 
     {
       super();
  
  
  
  1.5       +3 -8      xml-xalan/src/org/apache/xalan/xpath/Process.java
  
  Index: Process.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/Process.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Process.java	2000/02/25 22:06:54	1.4
  +++ Process.java	2000/03/02 10:22:08	1.5
  @@ -109,7 +109,7 @@
           return;
         }
         XPathProcessorImpl processor = new XPathProcessorImpl(callbacks);
  -      XPath xpath = new XPath(callbacks, new org.apache.xalan.xpath.xml.ProblemListenerDefault());
  +      XPath xpath = new XPath(new org.apache.xalan.xpath.xml.ProblemListenerDefault());
         String inputURI = null;
         String path = null;
         String match = null;
  @@ -142,30 +142,25 @@
         if(null != inputURI)
         {
           System.out.println("Parsing XML...");
  -        processor.pushTime(inputURI);
           java.net.URL url = callbacks.getURLFromString(inputURI, null);
           doc = callbacks.parseXML(url, null, null);
  -        processor.displayDuration("Parse ", inputURI);
         }
         else
         {
           doc = callbacks.getDOMFactory();
         }
  -      processor.pushTime(xpath);
         processor.initXPath(xpath, path, null);
  -      processor.displayDuration("Initialization of xpath ", xpath);
   
         XPath matchPat = null;
         if(null != match)
         {
  -        matchPat = new XPath(callbacks, new org.apache.xalan.xpath.xml.ProblemListenerDefault());
  +        matchPat = new XPath(new org.apache.xalan.xpath.xml.ProblemListenerDefault());
           processor.initMatchPattern(matchPat, match, null);
         }
   
  -      processor.pushTime(doc);
         // TODO: Do something about the prefix resolver.
         XObject result = xpath.execute(callbacks, doc, null);
  -      processor.displayDuration("Execution of xpath ", doc);
  +
         if(result.getType() == XObject.CLASS_NODESET)
         {
           System.out.println("<results>");
  
  
  
  1.17      +4 -13     xml-xalan/src/org/apache/xalan/xpath/SimpleNodeLocator.java
  
  Index: SimpleNodeLocator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/SimpleNodeLocator.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- SimpleNodeLocator.java	2000/03/01 03:01:56	1.16
  +++ SimpleNodeLocator.java	2000/03/02 10:22:08	1.17
  @@ -62,6 +62,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * SimpleNodeLocator implements a search of one or more DOM trees.
    * By using the connect function as an extension, the user may 
    * specify a directory and a filter specification for XML files 
  @@ -71,11 +72,6 @@
   public class SimpleNodeLocator implements XLocator, Serializable
   {  
     /**
  -   * Dev-time/QE switch to use optimized, depth-first search, or not.
  -   */
  -  public static boolean USEDEPTHFIRST = true;
  -  
  -  /**
      * Create a SimpleNodeLocator object.
      */
     public SimpleNodeLocator()
  @@ -558,14 +554,6 @@
       return subQueryResults;
     }
     
  -  /**
  -   * Add a node to the ContextNodeList, if we're doing depth-first 
  -   * traversal.
  -   */
  -  void addToContextNodeList(XPathSupport execContext, Node n)
  -  {
  -  }
  -
     
     /**
      * Add the context to the list if it meets the NodeTest qualification.
  @@ -1821,6 +1809,9 @@
       return score;    
     }
     
  +  /**
  +   * Create an XPathFactory for this XLocator.
  +   */
     public static XPathFactory factory() 
     {
       return new SimpleNodeLocatorFactory();
  
  
  
  1.6       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XBoolean.java
  
  Index: XBoolean.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XBoolean.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XBoolean.java	1999/12/16 03:50:32	1.5
  +++ XBoolean.java	2000/03/02 10:22:09	1.6
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * This class represents an XPath boolean object, and is capable of 
    * converting the boolean to other types, such as a string.
    */
  
  
  
  1.6       +2 -0      xml-xalan/src/org/apache/xalan/xpath/XBooleanStatic.java
  
  Index: XBooleanStatic.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XBooleanStatic.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XBooleanStatic.java	1999/11/28 10:26:16	1.5
  +++ XBooleanStatic.java	2000/03/02 10:22:09	1.6
  @@ -61,12 +61,14 @@
   import org.apache.xalan.xpath.xml.XSLMessages;
   
   /**
  + * <meta name="usage" content="internal"/>
    * This class doesn't have any XPathSupport, so override 
    * whatever to ensure it works OK.
    */
   public class XBooleanStatic extends XBoolean
   {
     boolean m_val;
  +  
     /**
      * Construct a XNodeSet object.
      */
  
  
  
  1.6       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XLocator.java
  
  Index: XLocator.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XLocator.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XLocator.java	2000/02/13 16:42:41	1.5
  +++ XLocator.java	2000/03/02 10:22:10	1.6
  @@ -61,6 +61,7 @@
   import java.io.Serializable;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * This interface provides services for processing a 
    * XPath LocationPath.  Either the default implementation 
    * (SimpleNodeLocator) will be used to implement this interface, 
  
  
  
  1.10      +1 -0      xml-xalan/src/org/apache/xalan/xpath/XNodeSet.java
  
  Index: XNodeSet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XNodeSet.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XNodeSet.java	2000/02/21 08:14:25	1.9
  +++ XNodeSet.java	2000/03/02 10:22:10	1.10
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class represents an XPath nodeset object, and is capable of 
    * converting the nodeset to other types, such as a string.
    */
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XNull.java
  
  Index: XNull.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XNull.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XNull.java	1999/12/16 03:50:32	1.4
  +++ XNull.java	2000/03/02 10:22:10	1.5
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class represents an XPath null object, and is capable of 
    * converting the null to other types, such as a string.
    */
  
  
  
  1.7       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XNumber.java
  
  Index: XNumber.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XNumber.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XNumber.java	2000/02/23 05:43:55	1.6
  +++ XNumber.java	2000/03/02 10:22:11	1.7
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class represents an XPath number, and is capable of 
    * converting the number to other types, such as a string.
    */
  
  
  
  1.10      +1 -0      xml-xalan/src/org/apache/xalan/xpath/XObject.java
  
  Index: XObject.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XObject.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- XObject.java	2000/01/31 17:03:07	1.9
  +++ XObject.java	2000/03/02 10:22:11	1.10
  @@ -62,6 +62,7 @@
   import org.apache.xalan.xpath.xml.XSLMessages;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class represents an XPath object, and is capable of 
    * converting the object to various types, such as a string.
    * This class acts as the base class to other XPath type objects, 
  
  
  
  1.20      +210 -139  xml-xalan/src/org/apache/xalan/xpath/XPath.java
  
  Index: XPath.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPath.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- XPath.java	2000/02/28 22:00:49	1.19
  +++ XPath.java	2000/03/02 10:22:11	1.20
  @@ -66,6 +66,7 @@
   import org.apache.xalan.xpath.xml.ProblemListener;
    
   /** 
  + * <meta name="usage" content="general"/>
    * The XPath class represents the semantic parse tree of the XPath pattern.
    * It is the representation of the grammar which filters out
    * the choice for replacement order of the production rules.
  @@ -78,36 +79,64 @@
   public class XPath implements Serializable
   {    
     /**
  +   * <meta name="usage" content="internal"/>
      * A true boolean object so we don't have to keep creating them.
      */
  -  public static XBoolean m_true = new XBooleanStatic(true);
  +  static XBoolean m_true = new XBooleanStatic(true);
     
     /**
  +   * <meta name="usage" content="internal"/>
      * A true boolean object so we don't have to keep creating them.
      */
  -  public static XBoolean m_false = new XBooleanStatic(false);
  +  static XBoolean m_false = new XBooleanStatic(false);
     
     /**
      * The current pattern string, for diagnostics purposes
      */
  -  public String m_currentPattern;
  +  String m_currentPattern;
     
     /**
  +   * Get the pattern string.
  +   */
  +  public String getPatternString()
  +  {
  +    return m_currentPattern;
  +  }
  +  
  +  /**
      * The max size that the token queue can grow to.
      */
  -  public static final int MAXTOKENQUEUESIZE = 500;
  +  static final int MAXTOKENQUEUESIZE = 500;
   
     /**
      *  TokenStack is the queue of used tokens. The current token is the token at the 
      * end of the m_tokenQueue. The idea is that the queue can be marked and a sequence
      * of tokens can be reused.
      */
  -  public Object[] m_tokenQueue = new Object[MAXTOKENQUEUESIZE];
  +  Object[] m_tokenQueue = new Object[MAXTOKENQUEUESIZE];
  +  
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * Get the XPath as a list of tokens.
  +   */
  +  public Object[] getTokenQueue()
  +  {
  +    return m_tokenQueue;
  +  }
   
     /**
      * The current size of the token queue.
  +   */
  +  int m_tokenQueueSize = 0;
  +
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * Get size of the token queue.
      */
  -  public int m_tokenQueueSize = 0;
  +  public int getTokenQueueSize()
  +  {
  +    return m_tokenQueueSize;
  +  }
   
     /**
      * An operations map is used instead of a proper parse tree.  It contains 
  @@ -115,11 +144,24 @@
      * I use an array instead of a full parse tree in order to cut down 
      * on the number of objects created.
      */
  -  public int m_opMap[] = null;
  +  int m_opMap[] = null;
     
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * Get the opcode list that describes the XPath operations.  It contains 
  +   * operations codes and indexes into the m_tokenQueue.
  +   * I use an array instead of a full parse tree in order to cut down 
  +   * on the number of objects created.
  +   */
  +  public int[] getOpMap()
  +  {
  +    return m_opMap;
  +  }
  +  
     // Position indexes
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * The length is always the opcode position + 1.
      * Length is always expressed as the opcode+length bytes, 
      * so it is always 2 or greater.
  @@ -129,7 +171,7 @@
     /**
      * If this is true, extra programmer error checks will be made.
      */
  -  static public final boolean m_debug = false;
  +  static final boolean m_debug = false;
     
     /**
      * This class can have a single listener that can be informed 
  @@ -143,20 +185,23 @@
      * If m_trace is set to true, trace strings will be written 
      * out to System.out.
      */
  -  static public final boolean m_trace = false;
  -  
  -  private void ____API____(){}
  +  static final boolean m_trace = false;
    
  -  public XPath(XPathSupport callbacks, ProblemListener problemListener)
  -  {
  -    m_problemListener = problemListener;
  -  }
  -
  +  /**
  +   * Construct a XPath, passing in a problem listener.  The object must 
  +   * be initialized by the XPathProcessorImpl.initXPath method.
  +   * @param problemListener An interface whereby the caller 
  +   * can listen for errors and warnings.
  +   */
     public XPath(ProblemListener problemListener)
     {
       m_problemListener = problemListener;
     }
   
  +  /**
  +   * Construct an XPath object.  The object must be initialized by the 
  +   * XPathProcessorImpl.initXPath method.
  +   */
     public XPath()
     {
       m_problemListener = new org.apache.xalan.xpath.xml.ProblemListenerDefault();
  @@ -191,19 +236,14 @@
     /**
      * getXLocatorHandler.
      */
  -  public XLocator createXLocatorHandler(XPath xpath)
  +  private XLocator createXLocatorHandler(XPathSupport callbacks)
     {
  -    return new SimpleNodeLocator();
  +    return callbacks.createXLocatorHandler();
     }
   
     /**
  -   * getXLocatorHandler.
  +   * Read the object from an input stream.
      */
  -  public XLocator createXLocatorHandler(XPathSupport callbacks)
  -  {
  -    return callbacks.createXLocatorHandler();
  -  }
  -
     private void readObject(ObjectInputStream stream)
       throws IOException
     {
  @@ -218,12 +258,13 @@
     }
     
     /**
  -   * Given an expression and a context, return the result.
  -   * @param expression The expression.
  -   * @param node The node that "." expresses.
  +   * Given an expression and a context, evaluate the XPath 
  +   * and return the result.
  +   * @param execContext The execution context.
  +   * @param contextNode The node that "." expresses.
      * @param namespaceContext The context in which namespaces in the 
  -   * queries are supposed to be expanded.
  -   * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide 
  +   * XPath are supposed to be expanded.
  +   * @exception SAXException thrown if the active ProblemListener decides 
      * the error condition is severe enough to halt processing.
      */
     public XObject execute(XPathSupport execContext, Node contextNode, 
  @@ -234,16 +275,25 @@
     }
   
     /**
  -   * Given an expression and a context, return the result.
  +   * <meta name="usage" content="advanced"/>
  +   * <meta name="state" content="experimental"/>
  +   * Given an expression and a context, evaluate the XPath 
  +   * and call the callback as nodes are found.  Only some simple 
  +   * types of expresions right now can call back, so if this 
  +   * method returns null, then the callbacks have been called, otherwise
  +   * a valid XObject will be returned.
      * @param execContext The execution context.
      * @param contextNode The node that "." expresses.
      * @param namespaceContext The context in which namespaces in the 
  -   * queries are supposed to be expanded.
  +   * XPath are supposed to be expanded.
  +   * @exception SAXException thrown if the active ProblemListener decides 
  +   * the error condition is severe enough to halt processing.
      * @param callback Interface that implements the processLocatedNode method.
      * @param callbackInfo Object that will be passed to the processLocatedNode method.
      * @param stopAtFirst True if the search should stop once the first node in document 
      * order is found.
  -   * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide 
  +   * @return The result of the XPath or null if callbacks are used.
  +   * @exception SAXException thrown if 
      * the error condition is severe enough to halt processing.
      */
     public XObject execute(XPathSupport execContext, Node contextNode, 
  @@ -376,7 +426,7 @@
      * Replace the large arrays 
      * with a small array.
      */
  -  public void shrink()
  +  void shrink()
     {
       int map[] = m_opMap;
       int n = m_opMap[MAPINDEX_LENGTH];;
  @@ -389,18 +439,7 @@
       m_opMap[i] = 0;
       m_opMap[i+1] = 0;
       m_opMap[i+2] = 0;
  -    
  -    map = m_patternMap;
  -    n = m_patternMapSize;
  -    m_patternMap = new int[n+4];
  -    for(i = 0; i < n; i++)
  -    {
  -      m_patternMap[i] = map[i];
  -    }
  -    m_patternMap[i] = 0;
  -    m_patternMap[i+1] = 0;
  -    m_patternMap[i+2] = 0;
  -    
  +        
       Object[] tokens = m_tokenQueue;
       n = m_tokenQueueSize;
       m_tokenQueue = new Object[n+4];
  @@ -449,8 +488,6 @@
       return funcIndex;
     }
   
  -  private void ____EVALUATION____(){}
  -
     /**
      * Execute from the beginning of the xpath.
      * @param context The current source tree context node.
  @@ -905,21 +942,8 @@
       return execute(execContext, context, opPos+2);
     }
   
  -  /**
  -   * Get the first unparented node in the ancestor chain.
  -   */
  -  public Node getRoot(XPathSupport execContext, Node node)
  -  {
  -    Node root = null;
  -    while(node != null)
  -    {
  -      root = node;
  -      node = execContext.getParentOfNode(node);
  -    }
  -    return root;
  -  }
  -    
     /**
  +   * <meta name="usage" content="advanced"/>
      * Execute a location path.
      * @param context The current source tree context node.
      * @param opPos The current position in the m_opMap array.
  @@ -946,6 +970,7 @@
     }
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * Evaluate a predicate.
      * @param context The current source tree context node.
      * @param opPos The current position in the m_opMap array.
  @@ -965,18 +990,6 @@
     }
     
     /**
  -   * Test a node.  This should be implemented by a derived class.
  -   * (Maybe we should do the default here?).
  -   * @return one of MATCH_SCORE_NONE, MATCH_SCORE_NODETEST, MATCH_SCORE_QNAME
  -   */
  -  public double nodeTest(XPathSupport execContext, Node context, int opPos, int argLen, int stepType)
  -    throws org.xml.sax.SAXException
  -  {
  -    warn(context,XPATHErrorResources.WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST); //"XPath needs a derived object to implement nodeTest!");
  -    return XPath.MATCH_SCORE_NONE;
  -  }
  -  
  -  /**
      * Execute a step in a location path.  This must be implemented 
      * by a derived class of XPath (or don't call at all 
      * from the derived implementation of locationPath()).
  @@ -1127,6 +1140,12 @@
       return new XNumber(results);
     }
   
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * This method is for building indexes of match patterns for fast lookup.
  +   * This allows a caller to get the name or type of a node, and quickly 
  +   * find the likely candidates that may match.
  +   */
     public Vector getTargetElementStrings()
     {
       Vector targetStrings = new Vector();
  @@ -1260,7 +1279,8 @@
     }
     
     /**
  -   * Execute the XPath object.
  +   * <meta name="usage" content="advanced"/>
  +   * Execute the XPath object from a given opcode position.
      * @param execContext The execution context.
      * @param context The current source tree context node.
      * @param opPos The current position in the xpath.m_opMap array.
  @@ -1313,13 +1333,17 @@
     }
   
     /**
  -   * Execute the XPath object.
  +   * <meta name="usage" content="advanced"/>
  +   * Execute the XPath object from a given opcode position, calling back 
  +   * to a NodeCallback interface as the nodes are found.  This will return 
  +   * null if the path is simple enough for callbacks to be used, otherwise 
  +   * it will return an XObject.
      * @param execContext The execution context.
      * @param context The current source tree context node.
      * @param opPos The current position in the xpath.m_opMap array.
      * @param callback Interface that implements the processLocatedNode method.
      * @param callbackInfo Object that will be passed to the processLocatedNode method.
  -   * @return The result of the XPath.
  +   * @return The result of the XPath or null if callbacks are used.
      */
     public XObject execute(XPathSupport execContext, Node context, int opPos, 
                            NodeCallback callback, Object callbackInfo, boolean stopAtFirst)
  @@ -1366,10 +1390,8 @@
       return null;
     }
     
  -  // ============= Op Code Position Helper Functions =================
  -  private void ____OPCODE_POSITION_HELPER_FUNCTIONS____(){}
  -  
     /**
  +   * <meta name="usage" content="advanced"/>
      * Given an operation position, return the current op.
      * @return position of next operation in m_opMap.
      */
  @@ -1379,6 +1401,7 @@
     }
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * Given an operation position, return the end position, i.e. the 
      * beginning of the next operation.
      * @return position of next operation in m_opMap.
  @@ -1389,6 +1412,7 @@
     }
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * Given an operation position, return the end position, i.e. the 
      * beginning of the next operation.
      * @return position of next operation in m_opMap.
  @@ -1399,6 +1423,7 @@
     }
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * Go to the first child of a given operation.
      */
     public static int getFirstChildPos(int opPos)
  @@ -1407,6 +1432,7 @@
     }
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * Go to the first child of a given operation.
      */
     public int getArgLengthOfStep(int opPos)
  @@ -1415,6 +1441,7 @@
     }
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * Go to the first child of a given operation.
      */
     public static int getFirstChildPosOfStep(int opPos)
  @@ -1422,9 +1449,9 @@
       return opPos+3;
     }
   
  -  // ============= DIAGNOSTIC & ERROR HANDLINING =================
  -  private void ____DIAGNOSTICS_AND_ERRORS____(){}
  -  
  +  /**
  +   * Simple trace function.
  +   */
     private final void trace(String s)
     {
       System.out.println(s);
  @@ -1433,7 +1460,7 @@
     /**
      * Warn the user of an problem.
      */
  -  public void warn(int msg)
  +  void warn(int msg)
       throws org.xml.sax.SAXException
     {
       warn(null, msg, null);
  @@ -1442,7 +1469,7 @@
     /**
      * Warn the user of an problem.
      */
  -  public void warn(int msg, Object[]args)
  +  void warn(int msg, Object[]args)
       throws org.xml.sax.SAXException
     {
       warn(null, msg, args);
  @@ -1451,7 +1478,7 @@
     /**
      * Warn the user of an problem.
      */
  -  public void warn(Node sourceNode, int msg)
  +  void warn(Node sourceNode, int msg)
       throws org.xml.sax.SAXException
     {
   	  warn(sourceNode, msg, null);
  @@ -1460,7 +1487,7 @@
     /**
      * Warn the user of an problem.
      */
  -  public void warn(Node sourceNode, int msg, Object[] args)
  +  void warn(Node sourceNode, int msg, Object[] args)
       throws org.xml.sax.SAXException
     {
       String fmsg = XSLMessages.createXPATHWarning(msg, args); 
  @@ -1489,7 +1516,7 @@
      * Tell the user of an error, and probably throw an 
      * exception.
      */
  -  public void error(int msg)
  +  void error(int msg)
       throws org.xml.sax.SAXException
     {
       error(null, msg, null);
  @@ -1499,7 +1526,7 @@
      * Tell the user of an error, and probably throw an 
      * exception.
      */
  -  public void error(int msg, Object[]args )
  +  void error(int msg, Object[]args )
       throws org.xml.sax.SAXException
     {
       error(null, msg, args);
  @@ -1509,7 +1536,7 @@
      * Tell the user of an error, and probably throw an 
      * exception.
      */
  -  public void error(Node sourceNode, int msg)
  +  void error(Node sourceNode, int msg)
       throws org.xml.sax.SAXException
     {
   	  error(sourceNode, msg, null);
  @@ -1519,7 +1546,7 @@
      * Tell the user of an error, and probably throw an 
      * exception.
      */
  -  public void error(Node sourceNode, int msg, Object[] args)
  +  void error(Node sourceNode, int msg, Object[] args)
       throws org.xml.sax.SAXException
     {
       String fMsg = XSLMessages.createXPATHMessage(msg, args); 
  @@ -1536,32 +1563,34 @@
         throw new XPathException(emsg);
       }
     }
  -  
  -  private void ____CONSTANTS____(){}
  -  
  +    
     /**
  +   * <meta name="usage" content="advanced"/>
      * The match score if no match is made.
      */
  -  // public static final double MATCH_SCORE_NONE = Double.NEGATIVE_INFINITY;
     public static final double MATCH_SCORE_NONE = Double.NEGATIVE_INFINITY;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * The match score if the pattern has the form 
      * of a QName optionally preceded by an @ character.
      */
     public static final double MATCH_SCORE_QNAME = 0.0;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * The match score if the pattern pattern has the form NCName:*.
      */
     public static final double MATCH_SCORE_NSWILD = -0.25;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * The match score if the pattern consists of just a NodeTest.
      */
     public static final double MATCH_SCORE_NODETEST = -0.5;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * The match score if the pattern consists of something 
      * other than just a NodeTest or just a qname.
      */
  @@ -1585,6 +1614,7 @@
     // returns: indicates what the production should return.
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [ENDOP]
      * Some operators may like to have a terminator.
      */
  @@ -1597,6 +1627,7 @@
     public static final int EMPTY = -2;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [ELEMWILDCARD]
      * Means ELEMWILDCARD ("*"), used instead 
      * of string index in some places.
  @@ -1604,6 +1635,7 @@
     public static final int ELEMWILDCARD = -3;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_XPATH]
      * [length]
      *  {expression}
  @@ -1619,6 +1651,7 @@
     public static final int OP_XPATH = 1;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_OR]
      * [length]
      *  {boolean expression}
  @@ -1630,6 +1663,7 @@
     public static final int OP_OR = 2;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_AND]
      * [length]
      *  {boolean expression}
  @@ -1641,6 +1675,7 @@
     public static final int OP_AND = 3;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_NOTEQUALS]
      * [length]
      *  {expression}
  @@ -1652,6 +1687,7 @@
     public static final int OP_NOTEQUALS = 4;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_EQUALS]
      * [length]
      *  {expression}
  @@ -1663,6 +1699,7 @@
     public static final int OP_EQUALS = 5;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_LTE] (less-than-or-equals)
      * [length]
      *  {number expression}
  @@ -1674,6 +1711,7 @@
     public static final int OP_LTE = 6;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_LT] (less-than)
      * [length]
      *  {number expression}
  @@ -1685,6 +1723,7 @@
     public static final int OP_LT = 7;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_GTE] (greater-than-or-equals)
      * [length]
      *  {number expression}
  @@ -1696,6 +1735,7 @@
     public static final int OP_GTE = 8;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_GT] (greater-than)
      * [length]
      *  {number expression}
  @@ -1707,6 +1747,7 @@
     public static final int OP_GT = 9;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_PLUS]
      * [length]
      *  {number expression}
  @@ -1718,6 +1759,7 @@
     public static final int OP_PLUS = 10;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_MINUS]
      * [length]
      *  {number expression}
  @@ -1729,6 +1771,7 @@
     public static final int OP_MINUS = 11;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_MULT]
      * [length]
      *  {number expression}
  @@ -1740,6 +1783,7 @@
     public static final int OP_MULT = 12;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_DIV]
      * [length]
      *  {number expression}
  @@ -1751,6 +1795,7 @@
     public static final int OP_DIV = 13;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_MOD]
      * [length]
      *  {number expression}
  @@ -1762,6 +1807,7 @@
     public static final int OP_MOD = 14;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_QUO]
      * [length]
      *  {number expression}
  @@ -1774,6 +1820,7 @@
   
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_NEG]
      * [length]
      *  {number expression}
  @@ -1784,6 +1831,7 @@
     public static final int OP_NEG = 16;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_STRING] (cast operation)
      * [length]
      *  {expression}
  @@ -1794,6 +1842,7 @@
     public static final int OP_STRING = 17;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_BOOL] (cast operation)
      * [length]
      *  {expression}
  @@ -1805,6 +1854,7 @@
   
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_NUMBER] (cast operation)
      * [length]
      *  {expression}
  @@ -1815,6 +1865,7 @@
     public static final int OP_NUMBER = 19;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_UNION]
      * [length]
      *  {PathExpr}+
  @@ -1825,6 +1876,7 @@
     public static final int OP_UNION = 20;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_LITERAL]
      * [3]
      * [index to token]
  @@ -1835,6 +1887,7 @@
     public static final int OP_LITERAL = 21;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_VARIABLE]
      * [3]
      * [index to token]
  @@ -1845,6 +1898,7 @@
     public static final int OP_VARIABLE = 22;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_GROUP]
      * [length]
      *  {expression}
  @@ -1860,6 +1914,7 @@
     public static final int OP_GROUP = 23;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_NUMBERLIT] (Number literal.)
      * [3]
      * [index to token]
  @@ -1870,6 +1925,7 @@
     public static final int OP_NUMBERLIT = 24;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_ARGUMENT] (Function argument.)
      * [length]
      *  {expression}
  @@ -1885,6 +1941,7 @@
     public static final int OP_ARGUMENT = 25;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_EXTFUNCTION] (Extension function.)
      * [length]
      * [index to namespace token]
  @@ -1903,6 +1960,7 @@
     
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_FUNCTION]
      * [length]
      * [FUNC_name]
  @@ -1920,6 +1978,7 @@
     public static final int OP_FUNCTION = 27;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_LOCATIONPATH]
      * [length]
      *   {FROM_stepType}
  @@ -1939,6 +1998,7 @@
       
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_PREDICATE]
      * [length]
      *  {expression}
  @@ -1950,6 +2010,7 @@
     public static final int OP_PREDICATE = 29;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_UNION]
      * [length]
      *  {PathExpr}+
  @@ -1961,6 +2022,7 @@
     
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [OP_UNION]
      * [length]
      *  {PathExpr}+
  @@ -1972,6 +2034,7 @@
   
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODETYPE_COMMENT]
      * No size or arguments.
      * Note: must not overlap function OP number!
  @@ -1982,6 +2045,7 @@
     public static final int NODETYPE_COMMENT = 1030;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODETYPE_TEXT]
      * No size or arguments.
      * Note: must not overlap function OP number!
  @@ -1992,6 +2056,7 @@
     public static final int NODETYPE_TEXT = 1031;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODETYPE_PI]
      * [index to token]
      * Note: must not overlap function OP number!
  @@ -2002,6 +2067,7 @@
     public static final int NODETYPE_PI = 1032;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODETYPE_NODE]
      * No size or arguments.
      * Note: must not overlap function OP number!
  @@ -2012,6 +2078,7 @@
     public static final int NODETYPE_NODE = 1033;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODENAME]
      * [index to ns token or EMPTY]
      * [index to name token]
  @@ -2022,6 +2089,7 @@
     public static final int NODENAME = 34;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODETYPE_ROOT]
      * No size or arguments.
      * 
  @@ -2031,6 +2099,7 @@
     public static final int NODETYPE_ROOT = 35;
       
     /**
  +   * <meta name="usage" content="advanced"/>
      * [NODETYPE_ANY]
      * No size or arguments.
      * 
  @@ -2040,6 +2109,7 @@
     public static final int NODETYPE_ANYELEMENT = 36;
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * [FROM_stepType]
      * [length, including predicates]
      * [length of just the step, without the predicates]
  @@ -2174,64 +2244,65 @@
       
     }
         
  -  // For match patterns
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * For match patterns.
  +   */
     public static final int MATCH_ATTRIBUTE = 94;  
  +      
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * For match patterns.
  +   */
     public static final int MATCH_ANY_ANCESTOR = 95;  
  +      
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * For match patterns.
  +   */
     public static final int MATCH_IMMEDIATE_ANCESTOR = 96; 
     
  -  // These are used mainly for keys in the pattern lookup table,
  -  // for those nodes that don't have unique lookup values
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * used mainly for keys in the pattern lookup table,
  +   * for those nodes that don't have unique lookup values.
  +   */
     public static final String PSEUDONAME_ANY = "*";
  +  
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * used mainly for keys in the pattern lookup table,
  +   * for those nodes that don't have unique lookup values.
  +   */
     public static final String PSEUDONAME_ROOT = "/";
  +  
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * used mainly for keys in the pattern lookup table,
  +   * for those nodes that don't have unique lookup values.
  +   */
     public static final String PSEUDONAME_TEXT = "#text";
  -  public static final String PSEUDONAME_COMMENT = "#comment";
  -  public static final String PSEUDONAME_PI = "#pi";
  -  public static final String PSEUDONAME_OTHER = "*";
     
  -  public static final int NEXT_FREE_ID = 99;
  +  /**
  +   * <meta name="usage" content="advanced"/>
  +   * used mainly for keys in the pattern lookup table,
  +   * for those nodes that don't have unique lookup values.
  +   */
  +  public static final String PSEUDONAME_COMMENT = "#comment";
     
  -  // ============= IGNORE =================
  -  private void ____IGNORE____(){}
  -
     /**
  -   * Ignore this, it is going away.
  -   * This holds a map to the m_tokenQueue that tells where the top-level elements are.
  -   * It is used for pattern matching so the m_tokenQueue can be walked backwards.
  -   * Each element that is a 'target', (right-most top level element name) has 
  -   * TARGETEXTRA added to it.
  -   * 
  +   * <meta name="usage" content="advanced"/>
  +   * used mainly for keys in the pattern lookup table,
  +   * for those nodes that don't have unique lookup values.
      */
  -  public int m_patternMap[] = new int[100];
  +  public static final String PSEUDONAME_PI = "#pi";
     
     /**
  -   * Ignore this, it is going away.
  -   * The number of elements that m_patternMap maps;
  +   * <meta name="usage" content="advanced"/>
  +   * used mainly for keys in the pattern lookup table,
  +   * for those nodes that don't have unique lookup values.
      */
  -  public int m_patternMapSize;
  +  public static final String PSEUDONAME_OTHER = "*";
     
  -  //====================
  -  /*
  -  public static void main( String argv[] )
  -  {
  -    TransformFactory sfactory = XSLTFactory.newTransformFactory(...);
  -    Params params = new Params();  // Bag of params..
  -    params.set("foo", "http://foo.com", "hello");
  -
  -    Transform transform1 = sfactory .newTransform(new InputSource("t1.xsl"));
  -    XSLTProcessor processor1 = transform1.newProcessor();
  -
  -    Transform transform2= sfactory.newTransform(new InputSource("t2.xsl"));
  -    XSLTProcessor processor2 = transform2.newProcessor();
  -
  -    Transform  transform3 = sfactory.newTransform(new InputSource("t3.xsl"));
  -    XSLTProcessor processor3= transform3 .newProcessor();
  -
  -    processor3.setResultTarget(new Result(System.out));
  -    processor2.setResultTarget(new Result(processor3));
  -    processor1.process(new InputSource("foo.xml"), params, new Result(processor2));
  -  }
  -  */
  -//====================
  -
  -   
  +  private static final int NEXT_FREE_ID = 99;   
   }
  
  
  
  1.8       +10 -6     xml-xalan/src/org/apache/xalan/xpath/XPathEnvSupport.java
  
  Index: XPathEnvSupport.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathEnvSupport.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XPathEnvSupport.java	2000/02/25 22:06:54	1.7
  +++ XPathEnvSupport.java	2000/03/02 10:22:11	1.8
  @@ -60,8 +60,12 @@
   import java.util.*;
   import org.apache.xalan.xpath.xml.QName;
   
  -/*
  - *
  +/**
  + * <meta name="usage" content="advanced"/>
  + * This class provides services that must be implemented by 
  + * the hosting environment, in other words, stuff that is 
  + * external to XPath.  At this point, it is likely that 
  + * this interface should be folded into XPathSupport.
    */
   public interface XPathEnvSupport
   {
  @@ -118,7 +122,7 @@
     /**
      * Handle an extension function.
      */
  -  public Object extFunction(String namespace, String extensionName,
  +  Object extFunction(String namespace, String extensionName,
                                   Vector argVec, Object methodKey)
       throws org.xml.sax.SAXException;
   
  @@ -127,13 +131,13 @@
      * the association based on the root of the tree that the
      * node is parented by.
      */
  -  public XLocator getXLocatorFromNode(Node node);
  +  XLocator getXLocatorFromNode(Node node);
   
     /**
      * Associate an XLocator provider to a node based on the root of the tree that the
      * node is parented by.
      */
  -  public void associateXLocatorToNode(Node node, XLocator xlocator);
  +  void associateXLocatorToNode(Node node, XLocator xlocator);
   
     /**
      * Determine whether extra whitespace should be stripped from the node. The determination is based
  @@ -144,7 +148,7 @@
      * @param textNode A text node from the source tree.
      * @return true if the text node should be stripped of extra whitespace.
      */
  -  public boolean shouldStripSourceNode(Node textNode)
  +  boolean shouldStripSourceNode(Node textNode)
       throws org.xml.sax.SAXException;
   
   }
  
  
  
  1.5       +61 -1     xml-xalan/src/org/apache/xalan/xpath/XPathException.java
  
  Index: XPathException.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathException.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XPathException.java	1999/12/13 07:55:24	1.4
  +++ XPathException.java	2000/03/02 10:22:12	1.5
  @@ -58,22 +58,62 @@
   import org.w3c.dom.Node;
   import org.xml.sax.SAXException;
   
  +/**
  + * <meta name="usage" content="general"/>
  + * This class implements an exception object that all 
  + * XPath classes will throw in case of an error.  This class
  + * extends SAXException, and may hold other exceptions. In the 
  + * case of nested exceptions, printStackTrace will dump 
  + * all the traces of the nested exceptions, not just the trace 
  + * of this object.
  + */
   public class XPathException extends SAXException
   {
  -  public Object m_styleNode = null;
  +  Object m_styleNode = null;
  +  
  +  /**
  +   * Get the stylesheet node from where this error originated.
  +   * @return The stylesheet node from where this error originated, or null.
  +   */
  +  public Object getStylesheetNode()
  +  {
  +    return m_styleNode;
  +  }
  +  
     protected Exception m_exception;
     
  +  /**
  +   * Create an XPathException object that holds 
  +   * an error message.
  +   * @param message The error message.
  +   */
     public XPathException(String message) 
     {
       super(message);
     }
     
  +  /**
  +   * Create an XPathException object that holds 
  +   * an error message and the stylesheet node that
  +   * the error originated from.
  +   * @param message The error message.
  +   * @param styleNode The stylesheet node that the error originated from.
  +   */
     public XPathException(String message, Object styleNode) 
     {
       super(message);
       m_styleNode = styleNode;
     }
   
  +  /**
  +   * Create an XPathException object that holds 
  +   * an error message, the stylesheet node that
  +   * the error originated from, and another exception 
  +   * that caused this exception.
  +   * @param message The error message.
  +   * @param styleNode The stylesheet node that the error originated from.
  +   * @param e The exception that caused this exception.
  +   */
     public XPathException (String message, Node styleNode, Exception e)
     {
       super(message);
  @@ -81,12 +121,25 @@
       this.m_exception = e;
     }
   
  +  /**
  +   * Create an XPathException object that holds 
  +   * an error message, and another exception 
  +   * that caused this exception.
  +   * @param message The error message.
  +   * @param e The exception that caused this exception.
  +   */
     public XPathException (String message, Exception e)
     {
       super(message);
       this.m_exception = e;
     }
     
  +  /**
  +   * Print the the trace of methods from where the error 
  +   * originated.  This will trace all nested exception 
  +   * objects, as well as this object.
  +   * @param s The stream where the dump will be sent to.
  +   */
     public void printStackTrace(java.io.PrintStream s) 
     {
       if(s == null)
  @@ -118,6 +171,7 @@
     
     /**
      * Find the most contained message.
  +   * @returns The error message of the originating exception.
      */
     public String getMessage() 
     {
  @@ -144,6 +198,12 @@
       return (null != lastMessage) ? lastMessage : "";
     }
   
  +  /**
  +   * Print the the trace of methods from where the error 
  +   * originated.  This will trace all nested exception 
  +   * objects, as well as this object.
  +   * @param s The writer where the dump will be sent to.
  +   */
     public void printStackTrace(java.io.PrintWriter s) 
     {
       if(s == null)
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XPathFactory.java
  
  Index: XPathFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathFactory.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XPathFactory.java	1999/11/08 20:55:46	1.1
  +++ XPathFactory.java	2000/03/02 10:22:12	1.2
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Factory class for creating an XPath.  Implementors of XPath derivatives
    * will need to make a derived class of this.
    */
  
  
  
  1.3       +22 -8     xml-xalan/src/org/apache/xalan/xpath/XPathProcessor.java
  
  Index: XPathProcessor.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathProcessor.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XPathProcessor.java	1999/11/28 04:25:08	1.2
  +++ XPathProcessor.java	2000/03/02 10:22:12	1.3
  @@ -60,24 +60,38 @@
   import java.util.*;
   
   /**
  - * The XPathProcessorImpl class' responsibilities include 
  - * initializing the XPath expression, and acting 
  - * as a general interface to XPaths.
  + * <meta name="usage" content="general"/>
  + * An object that implements the XPathProcessor interface 
  + * responsibilities include 
  + * initializing the XPath expression from an XPath string.
  + * This should really be named 
  + * XPathParser, and may be renamed in the future.
    */
   public interface XPathProcessor
   {
     /**
  -   * Given an string, make an XPath object, on order that a parse doesn't 
  -   * have to be done each time the expression is executed.
  +   * Given an string, init an XPath object for selections, 
  +   * in order that a parse doesn't 
  +   * have to be done each time the expression is evaluated.
  +   * @param pathObj The XPath object to be initialized.
  +   * @param expresson A String representing the XPath.
  +   * @param namespaceContext An object that is able to resolve prefixes in 
  +   * the XPath to namespaces.
      */
  -  public void initXPath(XPath pathObj, String expression, 
  +  void initXPath(XPath pathObj, String expression, 
                           org.apache.xalan.xpath.xml.PrefixResolver namespaceContext)
       throws org.xml.sax.SAXException;
   
     /**
  -   * Given an string, make an XSLT Match Pattern object.
  +   * Given an string, init an XPath object for pattern matches, 
  +   * in order that a parse doesn't 
  +   * have to be done each time the expression is evaluated.
  +   * @param pathObj The XPath object to be initialized.
  +   * @param expresson A String representing the XPath.
  +   * @param namespaceContext An object that is able to resolve prefixes in 
  +   * the XPath to namespaces.
      */
  -  public void initMatchPattern(XPath pathObj, String expression, 
  +  void initMatchPattern(XPath pathObj, String expression, 
                                  org.apache.xalan.xpath.xml.PrefixResolver namespaceContext)
       throws org.xml.sax.SAXException;
   }
  
  
  
  1.2       +17 -0     xml-xalan/src/org/apache/xalan/xpath/XPathProcessorException.java
  
  Index: XPathProcessorException.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathProcessorException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XPathProcessorException.java	1999/11/08 20:55:47	1.1
  +++ XPathProcessorException.java	2000/03/02 10:22:12	1.2
  @@ -56,13 +56,30 @@
    */
   package org.apache.xalan.xpath;
   
  +/**
  + * <meta name="usage" content="general"/>
  + * Derived from XPathException in order that XPath processor 
  + * exceptions may be specifically caught.
  + */
   public class XPathProcessorException extends XPathException
   {
  +  /**
  +   * Create an XPathProcessorException object that holds 
  +   * an error message.
  +   * @param message The error message.
  +   */
     public XPathProcessorException(String message) 
     {
       super(message);
     }
   
  +  /**
  +   * Create an XPathProcessorException object that holds 
  +   * an error message, and another exception 
  +   * that caused this exception.
  +   * @param message The error message.
  +   * @param e The exception that caused this exception.
  +   */
     public XPathProcessorException (String message, Exception e)
     {
       super(message, e);
  
  
  
  1.26      +97 -161   xml-xalan/src/org/apache/xalan/xpath/XPathProcessorImpl.java
  
  Index: XPathProcessorImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathProcessorImpl.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- XPathProcessorImpl.java	2000/03/01 16:47:06	1.25
  +++ XPathProcessorImpl.java	2000/03/02 10:22:13	1.26
  @@ -65,7 +65,9 @@
   import org.apache.xalan.xpath.xml.StringKey;
   
   /**
  - * Tokenizes and parses XPath expressions; provides a general interface to XPaths.
  + * <meta name="usage" content="general"/>
  + * Tokenizes and parses XPath expressions. This should really be named 
  + * XPathParserImpl, and may be renamed in the future.
    */
   public class XPathProcessorImpl implements XPathProcessor, java.io.Serializable
   {
  @@ -87,10 +89,11 @@
     /**
      * The position in the token queue is tracked by m_queueMark.
      */
  -  public int m_queueMark = 0;
  +  int m_queueMark = 0;
   
     /**
      * The parser constructor.
  +   * @param callbacks The execution context.
      */
     public XPathProcessorImpl(XPathSupport callbacks)
     {
  @@ -98,7 +101,9 @@
     }
   
     /**
  -   * The parser constructor.
  +   * The parser constructor.  This constructor creates 
  +   * it's own XPathSupportDefault object, which is only 
  +   * useful for some limited cases.
      */
     public XPathProcessorImpl()
     {
  @@ -109,59 +114,35 @@
     /* For diagnostics */
     Hashtable m_durationsTable = new Hashtable();
   
  -  PrefixResolver m_namespaceContext;
  -
  -  /**
  -   * Mark the time, so that displayDuration can later
  -   * display the elapse.
  -   */
  -  public void pushTime(Object key)
  -  {
  -    if(null != key)
  -    {
  -      m_durationsTable.put(key, new Date());
  -    }
  -  }
  -
  -  /**
  -   * Returns the duration since pushTime was called,
  -   * in milliseconds.
  -   */
  -  public long popDuration(Object key)
  -  {
  -    long millisecondsDuration = 0;
  -    if(null != key)
  -    {
  -      Date date1 = (Date)m_durationsTable.get(key);
  -      Date date2 = new Date();
  -      millisecondsDuration = date2.getTime() - date1.getTime();
  -      m_durationsTable.remove(key);
  -    }
  -    return millisecondsDuration;
  -  }
  -
     /**
  -   * Display the duration since pushTime was called.
  +   * The prefix resolver to map prefixes to namespaces in the XPath.
      */
  -  public void displayDuration(String info, Object key)
  -  {
  -    long millisecondsDuration = 0;
  -    if(null != key)
  -    {
  -      Date date1 = (Date)m_durationsTable.get(key);
  -      Date date2 = new Date();
  -      millisecondsDuration = date2.getTime() - date1.getTime();
  -      // if(null != m_diagnosticsPrintWriter)
  -      {
  -        System.out.println(info + " took " + millisecondsDuration + " milliseconds");
  -      }
  -      m_durationsTable.remove(key);
  -    }
  -  }
  -
  +  PrefixResolver m_namespaceContext;
  +  
     /**
  -   * Given an string, make an XPath object, on order that a parse doesn't
  -   * have to be done each time the expression is executed.
  +   * Ignore this, it is going away.
  +   * This holds a map to the m_tokenQueue that tells where the top-level elements are.
  +   * It is used for pattern matching so the m_tokenQueue can be walked backwards.
  +   * Each element that is a 'target', (right-most top level element name) has 
  +   * TARGETEXTRA added to it.
  +   * 
  +   */
  +  int m_patternMap[] = new int[100];
  +  
  +  /**
  +   * Ignore this, it is going away.
  +   * The number of elements that m_patternMap maps;
  +   */
  +  int m_patternMapSize;
  +
  +  /**
  +   * Given an string, init an XPath object for selections, 
  +   * in order that a parse doesn't 
  +   * have to be done each time the expression is evaluated.
  +   * @param pathObj The XPath object to be initialized.
  +   * @param expresson A String representing the XPath.
  +   * @param namespaceContext An object that is able to resolve prefixes in 
  +   * the XPath to namespaces.
      */
     public void initXPath(XPath pathObj, String expression, PrefixResolver namespaceContext)
       throws org.xml.sax.SAXException
  @@ -197,8 +178,13 @@
     }
   
     /**
  -   * Given an string, make an XPath object, on order that a parse doesn't
  -   * have to be done each time the expression is executed.
  +   * Given an string, init an XPath object for pattern matches, 
  +   * in order that a parse doesn't 
  +   * have to be done each time the expression is evaluated.
  +   * @param pathObj The XPath object to be initialized.
  +   * @param expresson A String representing the XPath.
  +   * @param namespaceContext An object that is able to resolve prefixes in 
  +   * the XPath to namespaces.
      */
     public void initMatchPattern(XPath pathObj, String expression, PrefixResolver namespaceContext)
       throws org.xml.sax.SAXException
  @@ -228,12 +214,6 @@
       m_xpath.shrink();
      }
   
  -  // Lexical Analysis
  -  private void ___________LEXICAL_ANALYSIS___________(){}
  -
  -   // ============= TOKENIZATION FUNCTIONS =================
  -  private void ____TOKENIZATION_FUNCTIONS____(){}
  -
     /**
      * Walk through the expression and build a token queue, and a map of the top-level
      * elements.
  @@ -256,7 +236,7 @@
     {
       m_xpath.m_tokenQueueSize = 0;
       m_xpath.m_currentPattern = pat;
  -    m_xpath.m_patternMapSize = 0;
  +    m_patternMapSize = 0;
       m_xpath.m_opMap = new int[XPath.MAXTOKENQUEUESIZE*5];
       int nChars = pat.length();
       int startSubstring = -1;
  @@ -504,11 +484,11 @@
       {
         if(!isStart)
         {
  -        m_xpath.m_patternMap[m_xpath.m_patternMapSize-1] -= TARGETEXTRA;
  +        m_patternMap[m_patternMapSize-1] -= TARGETEXTRA;
         }
  -      m_xpath.m_patternMap[m_xpath.m_patternMapSize]
  +      m_patternMap[m_patternMapSize]
           = (m_xpath.m_tokenQueueSize - (isAttrName ? 1 : 0)) + TARGETEXTRA;
  -      m_xpath.m_patternMapSize++;
  +      m_patternMapSize++;
         isStart = false;
       }
       return isStart;
  @@ -519,7 +499,7 @@
      */
     private void recordTokenString(Vector targetStrings)
     {
  -    int tokPos = getTokenQueuePosFromMap(m_xpath.m_patternMapSize-1);
  +    int tokPos = getTokenQueuePosFromMap(m_patternMapSize-1);
       resetTokenMark(tokPos+1);
   
       if(lookahead('(', 1))
  @@ -528,25 +508,25 @@
         switch(tok)
         {
         case XPath.NODETYPE_COMMENT:
  -        targetStrings.addElement(PSEUDONAME_COMMENT);
  +        targetStrings.addElement(XPath.PSEUDONAME_COMMENT);
           break;
         case XPath.NODETYPE_TEXT:
  -        targetStrings.addElement(PSEUDONAME_TEXT);
  +        targetStrings.addElement(XPath.PSEUDONAME_TEXT);
           break;
         case XPath.NODETYPE_NODE:
  -        targetStrings.addElement(PSEUDONAME_ANY);
  +        targetStrings.addElement(XPath.PSEUDONAME_ANY);
           break;
         case XPath.NODETYPE_ROOT:
  -        targetStrings.addElement(PSEUDONAME_ROOT);
  +        targetStrings.addElement(XPath.PSEUDONAME_ROOT);
           break;
         case XPath.NODETYPE_ANYELEMENT:
  -        targetStrings.addElement(PSEUDONAME_ANY);
  +        targetStrings.addElement(XPath.PSEUDONAME_ANY);
           break;
         case XPath.NODETYPE_PI:
  -        targetStrings.addElement(PSEUDONAME_ANY);
  +        targetStrings.addElement(XPath.PSEUDONAME_ANY);
           break;
         default:
  -        targetStrings.addElement(PSEUDONAME_ANY);
  +        targetStrings.addElement(XPath.PSEUDONAME_ANY);
         }
       }
       else
  @@ -564,9 +544,6 @@
       }
     }
   
  -  // ============= TOKEN ACCESS & MANIPULATION FUNCTIONS =================
  -  private void ____TOKEN_ACCESS_AND_MANIPULATION____(){}
  -
     private final void addToTokenQueue(String s)
     {
       m_xpath.m_tokenQueue[m_xpath.m_tokenQueueSize++] = s;
  @@ -639,7 +616,7 @@
      */
     int getTokenQueuePosFromMap(int i)
     {
  -    int pos = m_xpath.m_patternMap[i];
  +    int pos = m_patternMap[i];
       return (pos >= TARGETEXTRA) ? (pos - TARGETEXTRA) : pos;
     }
   
  @@ -653,9 +630,9 @@
     {
       int next = -1;
   
  -    for(int k = i+1; k < m_xpath.m_patternMapSize; k++)
  +    for(int k = i+1; k < m_patternMapSize; k++)
       {
  -      int pos = m_xpath.m_patternMap[k];
  +      int pos = m_patternMap[k];
         if(pos >= TARGETEXTRA)
         {
           next = k;
  @@ -671,48 +648,13 @@
      */
     int getNextIndexInMap(int i)
     {
  -    int next = (m_xpath.m_patternMap[i] >= TARGETEXTRA)
  -               ? -1 : (((i+1) < m_xpath.m_patternMapSize)
  +    int next = (m_patternMap[i] >= TARGETEXTRA)
  +               ? -1 : (((i+1) < m_patternMapSize)
                          ? (i+1) : -1);
       return next;
     }
   
     /**
  -   * Return the index above the passed index that
  -   * is the start if the next subpattern, or -1 if there is none.
  -   * If there is no next target, return -1.
  -   * Pass -1 in to start testing from zero.
  -   */
  -  int getNextSubpatternStartIndexInMap(int i)
  -  {
  -    int next = -1;
  -
  -    if(-1 == i)
  -    {
  -      next = 0;
  -    }
  -    else
  -    {
  -      // loop to find the next element that is marked
  -      // as a target element, then go one passed it to
  -      // return the next subpattern start index in the map.
  -      for(int k = i; k < m_xpath.m_patternMapSize; k++)
  -      {
  -        int pos = m_xpath.m_patternMap[k];
  -        if(pos >= TARGETEXTRA)
  -        {
  -          if((k+1) < m_xpath.m_patternMapSize)
  -          {
  -            next = (k+1);
  -          }
  -          break;
  -        }
  -      }
  -    }
  -    return next;
  -  }
  -
  -  /**
      * Return the next index from the passed index,
      * or -1 if it the passed index is the last index of the
      * subpattern.
  @@ -721,14 +663,14 @@
     {
       int next = -1;
       int k = (i+1);
  -    int nElems = m_xpath.m_patternMapSize;
  +    int nElems = m_patternMapSize;
   
       if(k < nElems)
       {
  -      int prevPos = (i >= 0) ? m_xpath.m_patternMap[i] : 0;
  +      int prevPos = (i >= 0) ? m_patternMap[i] : 0;
         if(prevPos != TARGETEXTRA)
         {
  -        next = m_xpath.m_patternMap[k];
  +        next = m_patternMap[k];
         }
       }
       return next;
  @@ -747,7 +689,7 @@
   
       if(k >= 0)
       {
  -      int pos = m_xpath.m_patternMap[k];
  +      int pos = m_patternMap[k];
         if(pos < TARGETEXTRA)
         {
           prev = k;
  @@ -991,19 +933,16 @@
       }
     }
   
  -  // ============= DIAGNOSTIC & ERROR HANDLINING =================
  -  private void ____DIAGNOSTICS_AND_ERRORS____(){}
  -
     /**
      * If this is true, extra programmer error checks will be made.
      */
  -  static public final boolean m_debug = false;
  +  static final boolean m_debug = false;
   
     /**
      * If m_trace is set to true, trace strings will be written
      * to System.out.
      */
  -  static public final boolean m_trace = false;
  +  static final boolean m_trace = false;
   
     private final void trace(String s)
     {
  @@ -1013,7 +952,7 @@
     /**
      * Warn the user of a problem.
      */
  -  public void warn(int msg)
  +  void warn(int msg)
       throws XPathProcessorException
     {
       warn(null, msg, null);
  @@ -1022,7 +961,7 @@
     /**
      * Warn the user of a problem.
      */
  -  public void warn(int msg, Object[]args)
  +  void warn(int msg, Object[]args)
       throws XPathProcessorException
     {
       warn(null, msg, args);
  @@ -1031,7 +970,7 @@
     /**
      * Warn the user of a problem.
      */
  -  public void warn(Node sourceNode, int msg)
  +  void warn(Node sourceNode, int msg)
       throws XPathProcessorException
     {
   	  warn(sourceNode, msg, null);
  @@ -1040,7 +979,7 @@
     /**
      * Warn the user of a problem.
      */
  -  public void warn(Node sourceNode, int msg, Object[] args)
  +  void warn(Node sourceNode, int msg, Object[] args)
       throws XPathProcessorException
     {
   	String fmsg = XSLMessages.createXPATHWarning(msg, args);
  @@ -1069,7 +1008,7 @@
      * Notify the user of an error, and probably throw an
      * exception.
      */
  -  public void error(int msg)
  +  void error(int msg)
       throws XPathProcessorException
     {
       error(null, msg, null);
  @@ -1079,7 +1018,7 @@
      * Notify the user of an error, and probably throw an
      * exception.
      */
  -  public void error(int msg, Object[] args)
  +  void error(int msg, Object[] args)
       throws XPathProcessorException
     {
       error(null, msg, args);
  @@ -1089,7 +1028,7 @@
      * Notify the user of an error, and probably throw an
      * exception.
      */
  -  public void error(Node sourceNode, int msg)
  +  void error(Node sourceNode, int msg)
       throws XPathProcessorException
     {
   	  error(sourceNode, msg, null);
  @@ -1099,7 +1038,7 @@
      * Notify the user of an error, and probably throw an
      * exception.
      */
  -  public void error(Node sourceNode, int msg, Object[] args)
  +  void error(Node sourceNode, int msg, Object[] args)
       throws XPathProcessorException
     {
   	String fmsg = XSLMessages.createXPATHMessage(msg, args);
  @@ -1148,15 +1087,6 @@
      */
     static final int TARGETEXTRA = 10000;
   
  -  // These are used mainly for keys in the pattern lookup table,
  -  // for those nodes that don't have unique lookup values
  -  public static final String PSEUDONAME_ANY = "*";
  -  public static final String PSEUDONAME_ROOT = "/";
  -  public static final String PSEUDONAME_TEXT = "#text";
  -  public static final String PSEUDONAME_COMMENT = "#comment";
  -  public static final String PSEUDONAME_PI = "#pi";
  -  public static final String PSEUDONAME_OTHER = "*";
  -
     private static Hashtable m_keywords = new Hashtable();
     private static Hashtable m_axisnames = new Hashtable();
     static Hashtable m_functions = new Hashtable();
  @@ -1782,7 +1712,7 @@
      * all descendants.
      * (Move to XPath?)
      */
  -  static boolean isLocationPathSimpleFollowing(XPath xpath, int opPos)
  +  private static boolean isLocationPathSimpleFollowing(XPath xpath, int opPos)
     {
       if(true)
       {
  @@ -2636,16 +2566,16 @@
       // Tell how long the entire step is.
       m_xpath.m_opMap[opPos + XPath.MAPINDEX_LENGTH] = m_xpath.m_opMap[XPath.MAPINDEX_LENGTH] - opPos;
     }
  -
  -  // ============= GRAMMAR FUNCTIONS =================
  -  private void ____DIAGNOSTIC_FUNCTIONS____(){}
   
  +  /**
  +   * Dump an XPath string to System.out.
  +   */
     public static void diagnoseXPathString( String str )
       throws org.xml.sax.SAXException
     {
       XPathSupport callbacks = new XPathSupportDefault();
       XPathProcessorImpl processor = new XPathProcessorImpl(callbacks);
  -    XPath xpath = new XPath(callbacks, new org.apache.xalan.xpath.xml.ProblemListenerDefault());
  +    XPath xpath = new XPath(new org.apache.xalan.xpath.xml.ProblemListenerDefault());
       processor.initXPath(xpath, str, null);
       processor.diagnoseXPath(xpath, 0, 0);
     }
  @@ -2674,7 +2604,7 @@
       return opPos;
     }
   
  -  static int diagnoseXPathMultiOperation(String op, int multiOp, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathMultiOperation(String op, int multiOp, XPath xpath, int opPos, int indent)
     {
       System.out.println(op+" {");
       opPos+=2;
  @@ -2691,7 +2621,7 @@
       return opPos;
     }
   
  -  static int diagnoseToken(XPath xpath, int opPos)
  +  private static int diagnoseToken(XPath xpath, int opPos)
     {
       System.out.print("{");
       System.out.print(xpath.m_tokenQueue[xpath.m_opMap[opPos]]);
  @@ -2699,7 +2629,7 @@
       return opPos+1;
     }
   
  -  static int diagnoseXPathSimpleOperation(String op, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathSimpleOperation(String op, XPath xpath, int opPos, int indent)
     {
       opPos+=2;
       System.out.print(op);
  @@ -2708,7 +2638,7 @@
       return opPos;
     }
   
  -  static int diagnoseXPathLocationStep(String op, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathLocationStep(String op, XPath xpath, int opPos, int indent)
     {
       // int opLen = xpath.m_opMap[opPos+xpath.MAPINDEX_LENGTH];
       int stepLen = xpath.m_opMap[opPos+xpath.MAPINDEX_LENGTH+1];
  @@ -3046,22 +2976,28 @@
     private static String m_open = "[";
     private static String m_close = "]";
   
  +  /**
  +   * Dump an XPath string to System.out.
  +   */
     public static void diagnoseXPathString2( String str )
       throws org.xml.sax.SAXException
     {
       XPathSupport callbacks = new XPathSupportDefault();
       XPathProcessorImpl processor = new XPathProcessorImpl(callbacks);
  -    XPath xpath = new XPath(callbacks, new org.apache.xalan.xpath.xml.ProblemListenerDefault());
  +    XPath xpath = new XPath(new org.apache.xalan.xpath.xml.ProblemListenerDefault());
       processor.initXPath(xpath, str, null);
       processor.diagnoseXPath2(xpath, 0, 0);
     }
   
  +  /**
  +   * Dump an XPath string to System.out.
  +   */
     public static void diagnoseXPathString3( String str )
       throws org.xml.sax.SAXException
     {
       XPathSupport callbacks = new XPathSupportDefault();
       XPathProcessorImpl processor = new XPathProcessorImpl(callbacks);
  -    XPath xpath = new XPath(callbacks, new org.apache.xalan.xpath.xml.ProblemListenerDefault());
  +    XPath xpath = new XPath(new org.apache.xalan.xpath.xml.ProblemListenerDefault());
       processor.initXPath(xpath, str, null);
       int len = xpath.m_opMap[xpath.MAPINDEX_LENGTH];
       for(int i = 0; i < len; i++)
  @@ -3099,7 +3035,7 @@
       System.out.print(m_open+opLen+m_close);
     }
   
  -  static int diagnoseXPathBinaryOperation2(String op, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathBinaryOperation2(String op, XPath xpath, int opPos, int indent)
     {
       diagnoseOp2(op, xpath, opPos);
       opPos+=2;
  @@ -3111,7 +3047,7 @@
       return opPos;
     }
   
  -  static int diagnoseXPathUnaryOperation2(String op, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathUnaryOperation2(String op, XPath xpath, int opPos, int indent)
     {
       diagnoseOp2(op, xpath, opPos);
       opPos+=2;
  @@ -3119,7 +3055,7 @@
       return opPos;
     }
   
  -  static int diagnoseXPathMultiOperation2(String op, int multiOp, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathMultiOperation2(String op, int multiOp, XPath xpath, int opPos, int indent)
     {
       diagnoseOp2(op, xpath, opPos);
       opPos+=2;
  @@ -3130,7 +3066,7 @@
       return opPos;
     }
   
  -  static int diagnoseToken2(XPath xpath, int opPos)
  +  private static int diagnoseToken2(XPath xpath, int opPos)
     {
       int tokenPos = xpath.m_opMap[opPos];
       String token = (tokenPos >= 0) ? xpath.m_tokenQueue[tokenPos].toString() :
  @@ -3141,13 +3077,13 @@
       return opPos+1;
     }
   
  -  static int diagnoseToken2SameLine(XPath xpath, int opPos)
  +  private static int diagnoseToken2SameLine(XPath xpath, int opPos)
     {
       System.out.print(m_noLabel+xpath.m_tokenQueue[xpath.m_opMap[opPos]]+m_close);
       return opPos+1;
     }
   
  -  static int diagnoseXPathSimpleOperation2(String op, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathSimpleOperation2(String op, XPath xpath, int opPos, int indent)
     {
       diagnoseOp2SameLine(op, xpath, opPos);
       opPos+=2;
  @@ -3155,7 +3091,7 @@
       return opPos;
     }
   
  -  static int diagnoseXPathLocationStep2(String op, XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPathLocationStep2(String op, XPath xpath, int opPos, int indent)
     {
       int opLen = xpath.m_opMap[opPos+xpath.MAPINDEX_LENGTH];
       int stepLen = xpath.m_opMap[opPos+xpath.MAPINDEX_LENGTH+1];
  @@ -3170,7 +3106,7 @@
       return opPos;
     }
   
  -  static int diagnoseXPath2(XPath xpath, int opPos, int indent)
  +  private static int diagnoseXPath2(XPath xpath, int opPos, int indent)
     {
       indent(indent);
       switch(xpath.m_opMap[opPos])
  
  
  
  1.9       +72 -26    xml-xalan/src/org/apache/xalan/xpath/XPathSupport.java
  
  Index: XPathSupport.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathSupport.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XPathSupport.java	2000/02/25 22:06:54	1.8
  +++ XPathSupport.java	2000/03/02 10:22:13	1.9
  @@ -62,8 +62,14 @@
   import org.xml.sax.*;
   import org.apache.xalan.xpath.xml.PrefixResolver;
   
  -/*
  - * Provides basic support for independent use of XPath.
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Provides basic support for independent use of XPath.  This interface 
  + * is used in order that there may be loose coupling between the 
  + * XPath package and the support services, such as the variable store, 
  + * parser services, DOM implementation, etc.  Most if all implementations
  + * of this should derive from XPathSupportDefault (hence, it should 
  + * probably be an abstract class instead of an interface).
    */
   public interface XPathSupport extends XPathEnvSupport
   {
  @@ -73,69 +79,99 @@
     NodeList getContextNodeList();
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Set the current context node list.
  +   * @param A nodelist that represents the current context 
  +   * list as defined by XPath.
      */
  -  public void pushContextNodeList(NodeList nl);
  +  void pushContextNodeList(NodeList nl);
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Pop the current context node list.
      */
  -  public void popContextNodeList();
  +  void popContextNodeList();
   
     /**
  -   * Get the current context node list.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Get the current position in the context node list.  Used for 
  +   * depth-first searching.
      */
     int getContextNodePosition();
   
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Increment the current context node position.
      */
     void incrementContextNodePosition(Node node);
   
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Decrement the current context node position.
      */
     void decrementContextNodePosition();
   
     /**
  -   * Get the current context node list.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Push the current context node position.
      */
     void pushContextNodePosition();
   
     /**
  -   * Get the current context node list.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Pop the current context node position.
      */
     void popContextNodePosition();
   
     /**
      * Get the current context node.
  +   * @return The current context node as defined by the XPath recommendation.
      */
     Node getCurrentNode();
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Set the current context node.
  +   * @param n The current context node as defined by the XPath recommendation.
      */
     void setCurrentNode(Node n);
   
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Push the current XPath selection,
  -   * needed for support of the last() function.  Ugh.
  +   * needed for support of the last() function in depth-first 
  +   * execution.  If the last() function is called, the originating 
  +   * XPath will be executed to get a count.  This is ugly, and later 
  +   * some sort of system can be done where the XPath can finish evaluating 
  +   * from the current point.
      */
     void pushXPathContext(XPath xpath, XPathSupport execContext, Node contextNode,
                            PrefixResolver namespaceContext);
   
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Pop the current XPathContext.
      */
     void popXPathContext();
   
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Reexecute the last xpath context after the specified one.
      */
     XObject reExecuteXPathContext(XPath path, XPathSupport execContext, Node context)
       throws SAXException;
   
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Push a dummy XPathContext so we can tell that the top-level xpath isn't
      * in effect.
      */
  @@ -143,40 +179,45 @@
   
     /**
      * Get the current namespace context for the xpath.
  +   * @return An object that can resolve XPath prefixes to namespaces.
      */
     PrefixResolver getNamespaceContext();
   
     /**
      * Get the current namespace context for the xpath.
  +   * @param pr An object that can resolve XPath prefixes to namespaces.
      */
     void setNamespaceContext(PrefixResolver pr);
   
     /**
  -   * Given a namespace, get the corrisponding prefix.
  +   * Given a namespace, get the corresponding prefix.
  +   * @param prefix A namespace prefix that is valid in the namespaceContext.
  +   * @param namespaceContext An element from which to evaluate the prefix resolution.
  +   * @return A namespace, or null if it can't be resolved.
      */
     String getNamespaceForPrefix(String prefix,
                                  Element namespaceContext);
   
     /**
      * Returns the namespace of the given node.
  +   * @param n The node in question.
  +   * @return A namespace, or null if there is none.
      */
     String getNamespaceOfNode(Node n);
   
     /**
      * Returns the local name of the given node.
  +   * @param n The node in question.
  +   * @return The local name of the node, or null if the node doesn't have a name.
      */
     String getLocalNameOfNode(Node n);
   
     /**
  -   * Get node data recursively.
  -   * (Note whitespace issues.)
  -   */
  -  // String getNodeData(Node node);
  -
  -  /**
      * This function has to be implemented,
      * because the DOM WG decided that attributes don't
      * have parents.
  +   * @param n The node in question.
  +   * @return The "owner" of the node.
      */
     Node getParentOfNode(Node node);
   
  @@ -184,13 +225,14 @@
      * Tell if the node is ignorable whitespace.
      * This should be in the DOM.  Return false if the
      * parser doesn't handle this.
  +   * @deprecated
      */
     boolean isIgnorableWhitespace(Text node);
   
     /**
  -   * Take a user string and try and parse XML, and also return
  -   * the url.
  +   * Take given a URL, try and parse XML.
      * the error condition is severe enough to halt processing.
  +   * @deprecated
      */
     Document parseXML(URL url,
                              DocumentHandler docHandler,
  @@ -221,14 +263,16 @@
   
     /**
      * Set whether or not the liaison attempts to expand namespaces.  Used
  -   * for optimization.
  +   * for optimization.  No longer used.
  +   * @deprecated
      */
  -  public void setProcessNamespaces(boolean processNamespaces);
  +  void setProcessNamespaces(boolean processNamespaces);
   
     /**
      * Tells if namespaces should be supported.  For optimization purposes.
  +   * @deprecated
      */
  -  public boolean getProcessNamespaces();
  +  boolean getProcessNamespaces();
   
     /**
      * Register an extension namespace handler. This handler provides
  @@ -238,34 +282,36 @@
      * @param uri the URI for the extension.
      * @param extNS the extension handler.
      */
  -  public void addExtensionNamespace (String uri,
  +  void addExtensionNamespace (String uri,
            ExtensionFunctionHandler extNS);
   
     /**
  +   * <meta name="usage" content="internal"/>
      * ThrowFoundIndex tells if FoundIndex should be thrown
      * if index is found.
      * This is an optimization for match patterns, and
      * is used internally by the XPath engine.
      */
  -  public boolean getThrowFoundIndex();
  +  boolean getThrowFoundIndex();
   
     /**
  +   * <meta name="usage" content="internal"/>
      * ThrowFoundIndex tells if FoundIndex should be thrown
      * if index is found.
      * This is an optimization for match patterns, and
      * is used internally by the XPath engine.
      */
  -  public void setThrowFoundIndex(boolean b);
  +  void setThrowFoundIndex(boolean b);
   
     /**
      * Get the current error handler, if there is one.
      */
  -  public org.xml.sax.ErrorHandler getErrorHandler();
  +  org.xml.sax.ErrorHandler getErrorHandler();
   
     /**
      * getXLocatorHandler.
      */
  -  public XLocator createXLocatorHandler();
  +  XLocator createXLocatorHandler();
   
   
     /**
  @@ -287,7 +333,7 @@
      *          exception will be thrown.  Otherwise the processor will
      *          continue to process.
      */
  -  public boolean problem(short where, short classification,
  +  boolean problem(short where, short classification,
                          Node styleNode, Node sourceNode,
                          String msg, int lineNo, int charOffset);
   
  
  
  
  1.14      +109 -18   xml-xalan/src/org/apache/xalan/xpath/XPathSupportDefault.java
  
  Index: XPathSupportDefault.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XPathSupportDefault.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XPathSupportDefault.java	2000/02/24 21:24:52	1.13
  +++ XPathSupportDefault.java	2000/03/02 10:22:13	1.14
  @@ -66,7 +66,11 @@
   import org.apache.xalan.xpath.xml.IntStack;
   
   /**
  - * Default class for execution context when XPath is used by itself.
  + * <meta name="usage" content="advanced"/>
  + * Default class for execution context when XPath is used by itself. Many 
  + * of the functions in this class need to be overridden in order to 
  + * perform correct execution of the XPath (for instance, variable 
  + * execution).  This class will likely eventually replace XMLParserLiaisons.
    */
   public class XPathSupportDefault implements XPathSupport
   {
  @@ -146,8 +150,14 @@
     private XPathContext m_dummyXPathContext = new XPathContext(null, null, null, null);
   
     /**
  -   * Push the current XPath selection, 
  -   * needed for support of the last() function.  Ugh.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Push the current XPath selection,
  +   * needed for support of the last() function in depth-first 
  +   * execution.  If the last() function is called, the originating 
  +   * XPath will be executed to get a count.  This is ugly, and later 
  +   * some sort of system can be done where the XPath can finish evaluating 
  +   * from the current point.
      */
     public void pushXPathContext(XPath xpath, XPathSupport execContext, Node contextNode, 
                            PrefixResolver namespaceContext)
  @@ -159,6 +169,8 @@
     }
     
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Pop the current XPathContext.
      */
     public void popXPathContext()
  @@ -177,7 +189,9 @@
   
     
     /**
  -   * Reexecute the xpath context below the specified one.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Reexecute the last xpath context after the specified one.
      */
     public XObject reExecuteXPathContext(XPath path, XPathSupport execContext, Node context)
       throws SAXException
  @@ -201,7 +215,10 @@
     }
     
     /**
  -   * Get the current context node list.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Get the current position in the context node list.  Used for 
  +   * depth-first searching.
      */
     public int getContextNodePosition()
     {
  @@ -212,6 +229,8 @@
     }
     
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Increment the current context node position.
      */
     public void incrementContextNodePosition(Node node)
  @@ -221,6 +240,8 @@
     }
    
     /**
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
      * Decrement the current context node position.
      */
     public void decrementContextNodePosition()
  @@ -229,7 +250,9 @@
     }
   
     /**
  -   * Get the current context node list.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Push the current context node position.
      */
     public void pushContextNodePosition()
     {
  @@ -238,7 +261,9 @@
     }
   
     /**
  -   * Get the current context node list.
  +   * <meta name="usage" content="internal"/>
  +   * <meta name="state" content="experimental"/>
  +   * Pop the current context node position.
      */
     public void popContextNodePosition()
     {
  @@ -258,7 +283,10 @@
     }
     
     /**
  +   * <meta name="usage" content="internal"/>
      * Set the current context node list.
  +   * @param A nodelist that represents the current context 
  +   * list as defined by XPath.
      */
     public void pushContextNodeList(NodeList nl)
     {
  @@ -267,6 +295,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Pop the current context node list.
      */
     public void popContextNodeList()
  @@ -282,9 +311,10 @@
     private boolean m_throwFoundIndex = false;
     
     /**
  -   * ThrowFoundIndex tells if FoundIndex should be thrown 
  +   * <meta name="usage" content="internal"/>
  +   * ThrowFoundIndex tells if FoundIndex should be thrown
      * if index is found.
  -   * This is an optimization for match patterns, and 
  +   * This is an optimization for match patterns, and
      * is used internally by the XPath engine.
      */
     public boolean getThrowFoundIndex()
  @@ -293,9 +323,10 @@
     }
   
     /**
  -   * ThrowFoundIndex tells if FoundIndex should be thrown 
  +   * <meta name="usage" content="internal"/>
  +   * ThrowFoundIndex tells if FoundIndex should be thrown
      * if index is found.
  -   * This is an optimization for match patterns, and 
  +   * This is an optimization for match patterns, and
      * is used internally by the XPath engine.
      */
     public void setThrowFoundIndex(boolean b)
  @@ -347,6 +378,12 @@
       m_currentPrefixResolver = pr;
     }
     
  +  /**
  +   * Given a namespace, get the corresponding prefix.
  +   * @param prefix A namespace prefix that is valid in the namespaceContext.
  +   * @param namespaceContext An element from which to evaluate the prefix resolution.
  +   * @return A namespace, or null if it can't be resolved.
  +   */
     public String getNamespaceForPrefix(String prefix, 
                                         Element namespaceContext)
     {
  @@ -357,6 +394,8 @@
     
     /**
      * Returns the namespace of the given node.
  +   * @param n The node in question.
  +   * @return A namespace, or null if there is none.
      */
     public String getNamespaceOfNode(Node n)
     {
  @@ -389,6 +428,8 @@
     
     /**
      * Returns the local name of the given node.
  +   * @param n The node in question.
  +   * @return The local name of the node, or null if the node doesn't have a name.
      */
     public String getLocalNameOfNode(Node n)
     {
  @@ -398,9 +439,11 @@
     }
     
     /**
  -   * This function has to be implemented, 
  -   * because the DOM WG decided that attributes don't 
  +   * This function has to be implemented,
  +   * because the DOM WG decided that attributes don't
      * have parents.
  +   * @param n The node in question.
  +   * @return The "owner" of the node.
      */
     public Node getParentOfNode(Node node)
     {
  @@ -409,23 +452,29 @@
     
     /**
      * Variables don't work when executing an XPath by itself.
  +   * @return XString that is an error message.
      */
     public XObject getVariable(QName name)
       throws org.xml.sax.SAXException
     {
       return new XString( "Unknown variable: name");
     }
  -  
  -  // public String getNodeData(Node node)
  -  // {
  -  //  return "";
  -  // }
     
  +  /**
  +   * Tell if the node is ignorable whitespace.
  +   * This should be in the DOM.  Return false if the
  +   * parser doesn't handle this.
  +   * @deprecated
  +   */
     public boolean isIgnorableWhitespace(Text node)
     {
       return false;
     }
     
  +  /**
  +   * Given a valid element key, return the corresponding node list.
  +   * @return null, derived element must override.
  +   */
     public NodeList getNodeSetByKey(Node doc, String name, 
                                     String ref, 
                                     org.apache.xalan.xpath.xml.PrefixResolver nscontext)
  @@ -434,21 +483,39 @@
       return null;
     }
     
  +  /**
  +   * Get table of source tree documents.
  +   * Document objects are keyed by URL string.
  +   * @return null, derived element must override.
  +   */
     public Hashtable getSourceDocsTable()
     {
       return null;
     }
     
  +  /**
  +   * Given a DOM Document, tell what URI was used to parse it.
  +   * @return string "unknown", derived element must override.
  +   */
     public String findURIFromDoc(Document owner)
     {
       return "unknown";
     }
     
  +  /**
  +   * Take given a URL, try and parse XML.
  +   * the error condition is severe enough to halt processing.
  +   * @deprecated
  +   */
     public Document parseXML(String urlString, String base)
     {
       return null;
     }
     
  +  /**
  +   * Get an element from an ID.
  +   * @return null, derived element must override.
  +   */
     public Element getElementByID(String id, Document doc)
     {
       return null;
  @@ -459,6 +526,7 @@
      * entity with the specified name in the same document as the context 
      * node (see [3.3 Unparsed Entities]). It returns the empty string if 
      * there is no such entity.
  +   * @return empty string, derived element must override.
      */
     public String getUnparsedEntityURI(String name, Document doc)
     {
  @@ -474,11 +542,34 @@
       throw new RuntimeException("setDOMFactory is not supported by XPathSupportDefault!");
     }
   
  +  /**
  +   * Get a DOM document, primarily for creating result
  +   * tree fragments.
  +   */
     public Document getDOMFactory()
     {
       return null;
     }
   
  +  /**
  +   * Function that is called when a problem event occurs.
  +   *
  +   * @param   where             Either and XMLPARSER, XSLPROCESSOR, or QUERYENGINE.
  +   * @param   classification    Either ERROR or WARNING.
  +   * @param   styleNode         The style tree node where the problem
  +   *                            occurred.  May be null.
  +   * @param   sourceNode        The source tree node where the problem
  +   *                            occurred.  May be null.
  +   * @param   msg               A string message explaining the problem.
  +   * @param   lineNo            The line number where the problem occurred,
  +   *                            if it is known. May be zero.
  +   * @param   charOffset        The character offset where the problem,
  +   *                            occurred if it is known. May be zero.
  +   *
  +   * @return  true if the return is an ERROR, in which case
  +   *          exception will be thrown.  Otherwise the processor will
  +   *          continue to process.
  +   */
     public boolean problem(short where, short classification, 
                            Node styleNode, Node sourceNode,
                            String msg, int lineNo, int charOffset)
  
  
  
  1.8       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XRTreeFrag.java
  
  Index: XRTreeFrag.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XRTreeFrag.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XRTreeFrag.java	1999/12/16 03:50:33	1.7
  +++ XRTreeFrag.java	2000/03/02 10:22:14	1.8
  @@ -60,6 +60,7 @@
   import org.apache.xalan.xpath.xml.XMLParserLiaisonDefault;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class represents an XPath result tree fragment object, and is capable of 
    * converting the RTF to other types, such as a string.
    */
  
  
  
  1.6       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XSLTJavaClassEngine.java
  
  Index: XSLTJavaClassEngine.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XSLTJavaClassEngine.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- XSLTJavaClassEngine.java	2000/02/10 19:11:45	1.5
  +++ XSLTJavaClassEngine.java	2000/03/02 10:22:14	1.6
  @@ -67,6 +67,7 @@
   import com.ibm.cs.util.ReflectionUtils;
   
   /**
  + * <meta name="usage" content="internal"/>
    * This is a custom scripting engine for the XSLT processor's needs of calling
    * into Java objects. 
    *
  
  
  
  1.7       +1 -0      xml-xalan/src/org/apache/xalan/xpath/XString.java
  
  Index: XString.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/XString.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XString.java	2000/02/09 21:16:19	1.6
  +++ XString.java	2000/03/02 10:22:14	1.7
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class represents an XPath string object, and is capable of 
    * converting the string to other types, such as a number.
    */
  
  
  
  1.3       +3 -2      xml-xalan/src/org/apache/xalan/xpath/dtm/ChunkedIntArray.java
  
  Index: ChunkedIntArray.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/ChunkedIntArray.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ChunkedIntArray.java	2000/01/26 05:00:26	1.2
  +++ ChunkedIntArray.java	2000/03/02 10:22:39	1.3
  @@ -60,6 +60,7 @@
   
   import org.xml.sax.HandlerBase;
   import org.xml.sax.AttributeList;
  +
   /**
    * <code>ChunkedIntArray</code> is an extensible array of blocks of integers.
    * (I'd consider Vector, but it's unable to handle integers except by
  @@ -71,7 +72,7 @@
    * The Java text suggest that private and Final methods may be inlined, 
    * and one can argue that this beast need not be made subclassable...
    */
  -public final class ChunkedIntArray
  +final class ChunkedIntArray
     extends org.xml.sax.HandlerBase
   {
     final int slotsize=4; // Locked, MUST be power of two in current code
  @@ -89,7 +90,7 @@
      * Create a new CIA with specified record size. Currently record size MUST
      * be a power of two... and in fact is hardcoded to 4.
      */
  -  public ChunkedIntArray(int slotsize)
  +  ChunkedIntArray(int slotsize)
     {
       if(this.slotsize<slotsize)
         throw new ArrayIndexOutOfBoundsException("ChunkedIntArray("+slotsize+") not currently supported");
  
  
  
  1.14      +2 -0      xml-xalan/src/org/apache/xalan/xpath/dtm/DTM.java
  
  Index: DTM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTM.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- DTM.java	2000/02/23 17:09:43	1.13
  +++ DTM.java	2000/03/02 10:22:39	1.14
  @@ -77,6 +77,7 @@
   import org.apache.xalan.xpath.xml.StringToStringTableVector;
   
   /**
  + * <meta name="usage" content="internal"/>
    * <code>DTM</code> is an XML document model expressed as a table rather than
    * an object tree. It attempts to be very compact, and to support very
    * specifically limited multitasking: users can start reading the document
  @@ -2076,6 +2077,7 @@
       }
       
       public final void loadSchema(String uri) {}
  +    public final void loadSchema(InputSource is) {}
     }
   
     //==========================================================
  
  
  
  1.2       +16 -11    xml-xalan/src/org/apache/xalan/xpath/dtm/DTMException.java
  
  Index: DTMException.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTMException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DTMException.java	1999/11/08 20:56:04	1.1
  +++ DTMException.java	2000/03/02 10:22:40	1.2
  @@ -56,17 +56,22 @@
    */
   package org.apache.xalan.xpath.dtm;
   
  -/** Simple implementation of DOMException. Could have used the one in
  -    com.ibm.xml.dom, but didn't want to depend on that package.
  -    */
  +/** 
  + * <meta name="usage" content="internal"/>
  + * Simple implementation of DOMException. Could have used the one in
  + * com.ibm.xml.dom, but didn't want to depend on that package.
  + */
   public class DTMException
  -extends org.w3c.dom.DOMException
  +  extends org.w3c.dom.DOMException
   {
  -    /** Constructs a DOM/DTM exception. */
  -    public DTMException(short code, String message) {
  -	    super(code, message);
  -    }    
  -    public DTMException(short code) {
  -	    super(code,"");
  -    }    
  +  /** Constructs a DOM/DTM exception. */
  +  public DTMException(short code, String message) 
  +  {
  +    super(code, message);
  +  }    
  +  
  +  public DTMException(short code) 
  +  {
  +    super(code,"");
  +  }    
   }
  
  
  
  1.12      +1 -0      xml-xalan/src/org/apache/xalan/xpath/dtm/DTMLiaison.java
  
  Index: DTMLiaison.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTMLiaison.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DTMLiaison.java	2000/03/01 18:07:38	1.11
  +++ DTMLiaison.java	2000/03/02 10:22:40	1.12
  @@ -72,6 +72,7 @@
   import org.apache.xalan.xpath.res.XPATHErrorResources;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Liaison to Document Table Model (DTM) XML parser -- the default liaison and parser that XSLTProcessor
    * uses to perform transformations.
    * To enhance performance, DTM uses integer arrays to represent a DOM. If you are reading or writing a
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/dtm/DTMNodeVector.java
  
  Index: DTMNodeVector.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTMNodeVector.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DTMNodeVector.java	1999/11/08 20:56:08	1.1
  +++ DTMNodeVector.java	2000/03/02 10:22:40	1.2
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath.dtm;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Simple class to hold an array of nodes.
    */
   class DTMNodeVector
  
  
  
  1.8       +1 -0      xml-xalan/src/org/apache/xalan/xpath/dtm/DTMProxy.java
  
  Index: DTMProxy.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTMProxy.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DTMProxy.java	2000/01/31 08:24:46	1.7
  +++ DTMProxy.java	2000/03/02 10:22:40	1.8
  @@ -58,6 +58,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="internal"/>
    * <code>DTMProxy</code> presents a DOM Node API front-end to the DTM model.
    * <p>
    * It does _not_ attempt to address the "node identity" question; no effort
  
  
  
  1.3       +15 -13    xml-xalan/src/org/apache/xalan/xpath/dtm/DTMProxyMap.java
  
  Index: DTMProxyMap.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/DTMProxyMap.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DTMProxyMap.java	2000/01/13 19:45:26	1.2
  +++ DTMProxyMap.java	2000/03/02 10:22:40	1.3
  @@ -58,19 +58,21 @@
   import org.w3c.dom.*;
   import java.util.Vector;
   
  -/** DTMProxyMap is a quickie (as opposed to quick) implementation of the DOM's
  -    NamedNodeMap interface, intended to support DTMProxy's getAttributes()
  -    call. 
  -    <p>
  -    ***** Note: this does _not_ current attempt to cache any of the data;
  -    if you ask for attribute 27 and then 28, you'll have to rescan the first
  -    27. It should probably at least keep track of the last one retrieved,
  -    and possibly buffer the whole array.
  -    <p>
  -    ***** Also note that there's no fastpath for the by-name query; we search
  -    linearly until we find it or fail to find it. Again, that could be
  -    optimized at some cost in object creation/storage.
  -*/
  +/** 
  + * <meta name="usage" content="internal"/>
  + * DTMProxyMap is a quickie (as opposed to quick) implementation of the DOM's
  + * NamedNodeMap interface, intended to support DTMProxy's getAttributes()
  + * call. 
  + * <p>
  + * ***** Note: this does _not_ current attempt to cache any of the data;
  + * if you ask for attribute 27 and then 28, you'll have to rescan the first
  + * 27. It should probably at least keep track of the last one retrieved,
  + * and possibly buffer the whole array.
  + * <p>
  + * ***** Also note that there's no fastpath for the by-name query; we search
  + * linearly until we find it or fail to find it. Again, that could be
  + * optimized at some cost in object creation/storage.
  + */
   public class DTMProxyMap
   implements NamedNodeMap
   {
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/dtm/IntMap.java
  
  Index: IntMap.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/IntMap.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IntMap.java	1999/11/08 20:56:07	1.1
  +++ IntMap.java	2000/03/02 10:22:41	1.2
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath.dtm;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Simple int lookup.
    */
   class IntMap
  
  
  
  1.2       +5 -1      xml-xalan/src/org/apache/xalan/xpath/dtm/IntToObjectMap.java
  
  Index: IntToObjectMap.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/dtm/IntToObjectMap.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- IntToObjectMap.java	1999/11/08 20:56:08	1.1
  +++ IntToObjectMap.java	2000/03/02 10:22:41	1.2
  @@ -56,7 +56,11 @@
    */
   package org.apache.xalan.xpath.dtm;
   
  -public class IntToObjectMap
  +/**
  + * <meta name="usage" content="internal"/>
  + * Map simple ints to objects.
  + */
  +class IntToObjectMap
   {
     static final int BLOCKSIZE = 64;
     int m_map[] = new int[BLOCKSIZE];
  
  
  
  1.2       +89 -86    xml-xalan/src/org/apache/xalan/xpath/res/XPATHErrorResourceBundle.java
  
  Index: XPATHErrorResourceBundle.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/res/XPATHErrorResourceBundle.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XPATHErrorResourceBundle.java	1999/11/08 20:56:02	1.1
  +++ XPATHErrorResourceBundle.java	2000/03/02 10:22:43	1.2
  @@ -1,93 +1,96 @@
   package org.apache.xalan.xpath.res;
   import java.util.*;
  -//
  -//  LangResources_en.properties
  -//
  +
  +/**
  + * <meta name="usage" content="internal"/>
  + * LangResources_en.properties
  + */
   public class XPATHErrorResourceBundle extends ListResourceBundle 
  -{
  -public Object[][] getContents()
   {
  -	return contents;
  -}	
  +  public Object[][] getContents()
  +  {
  +    return contents;
  +  }	
  +
  +  static final Object[][] contents = 
  +  {
  +
  +    {"ui_language","en"},
  +    {"help_language", "en"},
  +    {"language", "en"},
  +
  +    {"ERROR0001","0001"},
  +    {"ERROR0002", "0002"},
  +    {"ERROR0003", "0003"},
  +    {"ERROR0004", "0004"},
  +    {"ERROR0005", "0005"},
  +    {"ERROR0006", "0006"},
  +    {"ERROR0007", "0007"},
  +    {"ERROR0008", "0008"},
  +    {"ERROR0009", "0009"},
  +    {"ERROR0010", "0010"},
  +    {"ERROR0011", "0011"},
  +    {"ERROR0012", "0012"},
  +    {"ERROR0013", "0013"},
  +    {"ERROR0014", "0014"},
  +    {"ERROR0015", "0015"},
  +    {"ERROR0016", "0016"},
  +    {"ERROR0017", "0017"},
  +    {"ERROR0018", "0018"},
  +    {"ERROR0019", "0019"},
  +    {"ERROR0020", "0020"},
  +    {"ERROR0021", "0021"},
  +    {"ERROR0022", "0022"},
  +    {"ERROR0023", "0023"},
  +    {"ERROR0024", "0024"},
  +    {"ERROR0025", "0025"},
  +    {"ERROR0026", "0026"},
  +    {"ERROR0027", "0027"},
  +    {"ERROR0028", "0028"},
  +    {"ERROR0029", "0029"},
  +    {"ERROR0030", "0030"},
  +    {"ERROR0031", "0031"},
  +    {"ERROR0032", "0032"},
  +    {"ERROR0033", "0033"},
  +    {"ERROR0034", "0034"},
  +    {"ERROR0035", "0035"},
  +    {"ERROR0036", "0036"},
  +    {"ERROR0037", "0037"},
  +    {"ERROR0038", "0038"},
  +    {"ERROR0039", "0039"},
  +    {"ERROR0040", "0040"},
  +    {"ERROR0041", "0041"},
  +    {"ERROR0042", "0042"},
  +    {"ERROR0043", "0043"},
  +    {"ERROR0044", "0044"},
  +    {"ERROR0045", "0045"},
  +    {"ERROR0046", "0046"},
  +    {"ERROR0047", "0047"},
  +    {"ERROR0048", "0048"},
  +    {"ERROR0049", "0049"},
  +    {"ERROR0050", "0050"},
  +    {"ERROR0051", "0051"},
  +    {"ERROR0052", "0052"},
  +    {"ERROR0053", "0053"},
  +    {"ERROR0054", "0054"},
  +    {"ERROR0055", "0055"},
  +    {"ERROR0056", "0056"},
  +    {"ERROR0057", "0057"},
  +    {"ERROR0058", "0058"},
  +    {"ERROR0059", "0059"},
  +    {"ERROR0060", "0060"},
   
  -static final Object[][] contents = {
   
  -{"ui_language","en"},
  -{"help_language", "en"},
  -{"language", "en"},
  -
  -{"ERROR0001","0001"},
  -{"ERROR0002", "0002"},
  -{"ERROR0003", "0003"},
  -{"ERROR0004", "0004"},
  -{"ERROR0005", "0005"},
  -{"ERROR0006", "0006"},
  -{"ERROR0007", "0007"},
  -{"ERROR0008", "0008"},
  -{"ERROR0009", "0009"},
  -{"ERROR0010", "0010"},
  -{"ERROR0011", "0011"},
  -{"ERROR0012", "0012"},
  -{"ERROR0013", "0013"},
  -{"ERROR0014", "0014"},
  -{"ERROR0015", "0015"},
  -{"ERROR0016", "0016"},
  -{"ERROR0017", "0017"},
  -{"ERROR0018", "0018"},
  -{"ERROR0019", "0019"},
  -{"ERROR0020", "0020"},
  -{"ERROR0021", "0021"},
  -{"ERROR0022", "0022"},
  -{"ERROR0023", "0023"},
  -{"ERROR0024", "0024"},
  -{"ERROR0025", "0025"},
  -{"ERROR0026", "0026"},
  -{"ERROR0027", "0027"},
  -{"ERROR0028", "0028"},
  -{"ERROR0029", "0029"},
  -{"ERROR0030", "0030"},
  -{"ERROR0031", "0031"},
  -{"ERROR0032", "0032"},
  -{"ERROR0033", "0033"},
  -{"ERROR0034", "0034"},
  -{"ERROR0035", "0035"},
  -{"ERROR0036", "0036"},
  -{"ERROR0037", "0037"},
  -{"ERROR0038", "0038"},
  -{"ERROR0039", "0039"},
  -{"ERROR0040", "0040"},
  -{"ERROR0041", "0041"},
  -{"ERROR0042", "0042"},
  -{"ERROR0043", "0043"},
  -{"ERROR0044", "0044"},
  -{"ERROR0045", "0045"},
  -{"ERROR0046", "0046"},
  -{"ERROR0047", "0047"},
  -{"ERROR0048", "0048"},
  -{"ERROR0049", "0049"},
  -{"ERROR0050", "0050"},
  -{"ERROR0051", "0051"},
  -{"ERROR0052", "0052"},
  -{"ERROR0053", "0053"},
  -{"ERROR0054", "0054"},
  -{"ERROR0055", "0055"},
  -{"ERROR0056", "0056"},
  -{"ERROR0057", "0057"},
  -{"ERROR0058", "0058"},
  -{"ERROR0059", "0059"},
  -{"ERROR0060", "0060"},
  -
  -
  -{"WARNING0001", "0001"},
  -{"WARNING0002", "0002"},
  -{"WARNING0003", "0003"},
  -{"WARNING0004", "0004"},
  -{"WARNING0005", "0005"},
  -{"WARNING0006", "0006"},
  -{"WARNING0007", "0007"},
  -{"WARNING0008", "0008"},
  -{"WARNING0009", "0009"},
  -{"WARNING0010", "0010"},
  -{"WARNING0011", "0011"}
  -};    
  +    {"WARNING0001", "0001"},
  +    {"WARNING0002", "0002"},
  +    {"WARNING0003", "0003"},
  +    {"WARNING0004", "0004"},
  +    {"WARNING0005", "0005"},
  +    {"WARNING0006", "0006"},
  +    {"WARNING0007", "0007"},
  +    {"WARNING0008", "0008"},
  +    {"WARNING0009", "0009"},
  +    {"WARNING0010", "0010"},
  +    {"WARNING0011", "0011"}
  +  };    
   }  
  
  
  
  1.14      +555 -437  xml-xalan/src/org/apache/xalan/xpath/res/XPATHErrorResources.java
  
  Index: XPATHErrorResources.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/res/XPATHErrorResources.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- XPATHErrorResources.java	2000/03/01 16:47:07	1.13
  +++ XPATHErrorResources.java	2000/03/02 10:22:44	1.14
  @@ -4,6 +4,7 @@
   import java.text.DecimalFormat;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Set up error messages.
    * We build a two dimensional array of message keys and 
    * message strings. In order to add a new message here,
  @@ -16,428 +17,545 @@
   public class XPATHErrorResources extends XSLResourceBundle 
   {
   
  -public static final String ERROR_SUFFIX = "ER";  
  -public static final String WARNING_SUFFIX = "WR";
  +  public static final String ERROR_SUFFIX = "ER";  
  +  public static final String WARNING_SUFFIX = "WR";
   
  -public static final int MAX_CODE = 47;                // this is needed to keep track of the number of messages          
  -public static final int MAX_WARNING = 10;             // this is needed to keep track of the number of warnings
  -public static final int MAX_OTHERS = 20;
  -public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING +1;
  -
  -static final Object[][] contents = new Object[MAX_MESSAGES + MAX_OTHERS +1][2];
  -
  -/* 
  - * Now fill in the message keys.
  - * This does not need to be updated. If MAX_CODE and MAX_WARNING
  - * are correct, the keys will get filled in automatically with
  - * the value ERxxxx (WRxxxx for warnings) where xxxx is a 
  - * formatted number corresponding to the error code (i.e. ER0001).
  - */ 
  -static 
  -{
  -  for(int i = 0; i < MAX_CODE+1; i++)
  +  public static final int MAX_CODE = 47;                // this is needed to keep track of the number of messages          
  +  public static final int MAX_WARNING = 10;             // this is needed to keep track of the number of warnings
  +  public static final int MAX_OTHERS = 20;
  +  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING +1;
  +
  +  static final Object[][] contents = new Object[MAX_MESSAGES + MAX_OTHERS +1][2];
  +
  +  /* 
  +  * Now fill in the message keys.
  +  * This does not need to be updated. If MAX_CODE and MAX_WARNING
  +  * are correct, the keys will get filled in automatically with
  +  * the value ERxxxx (WRxxxx for warnings) where xxxx is a 
  +  * formatted number corresponding to the error code (i.e. ER0001).
  +  */ 
  +  static 
  +  {
  +    for(int i = 0; i < MAX_CODE+1; i++)
  +    {
  +      contents[i][0] = getMKey(i);
  +    }
  +    for(int i = 1; i < MAX_WARNING+1; i++)
  +    {
  +      contents[i+ MAX_CODE][0] = getWKey(i);
  +    }
  +  }
  +
  +  /*
  +  * Now fill in the message text.
  +  * First create an int for the message code. Make sure you 
  +  * update MAX_CODE for error messages and MAX_WARNING for warnings
  +  * Then fill in the message text for that message code in the
  +  * array. Use the new error code as the index into the array.
  +  */ 
  +
  +  // Error messages...
  +
  +  public static final int ERROR0000 = 0;
  +  static 
  +  {
  +    contents[ERROR0000][1] 
  +    = "{0}";
  +  }
  +
  +  public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
  +  static 
  +  {
  +    contents[ER_CURRENT_NOT_ALLOWED_IN_MATCH][1] 
  +    = "The current() function is not allowed in a match pattern!";
  +  }
  +
  +  public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
  +  static 
  +  {
  +    contents[ER_CURRENT_TAKES_NO_ARGS][1] 
  +    = "The current() function does not accept arguments!";
  +  }
  +
  +  public static final int ER_DOCUMENT_REPLACED = 3;
  +  static 
  +  {
  +    contents[ER_DOCUMENT_REPLACED][1] 
  +    = "document() function implementation has been replaced by org.apache.xalan.xslt.FuncDocument!";
  +  }
  +
  +  public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
  +  static 
  +  {
  +    contents[ER_CONTEXT_HAS_NO_OWNERDOC][1] 
  +    = "context does not have an owner document!";
  +  }
  +
  +  public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS  = 5;
  +  static 
  +  {
  +    contents[ER_LOCALNAME_HAS_TOO_MANY_ARGS ][1] 
  +    = "local-name() has too many arguments.";
  +  }
  +
  +  public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS  = 6;
  +  static 
  +  {
  +    contents[ER_NAMESPACEURI_HAS_TOO_MANY_ARGS ][1] 
  +    = "namespace-uri() has too many arguments.";
  +  }
  +
  +  public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS  = 7;
  +  static 
  +  {
  +    contents[ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS ][1] 
  +    = "normalize-space() has too many arguments.";
  +  }
  +
  +  public static final int ER_NUMBER_HAS_TOO_MANY_ARGS  = 8;
  +  static 
  +  {
  +    contents[ER_NUMBER_HAS_TOO_MANY_ARGS ][1] 
  +    = "number() has too many arguments.";
  +  }
  +
  +  public static final int ER_NAME_HAS_TOO_MANY_ARGS  = 9;
  +  static 
  +  {
  +    contents[ER_NAME_HAS_TOO_MANY_ARGS ][1] 
  +    = "name() has too many arguments.";
  +  }
  +
  +  public static final int ER_STRING_HAS_TOO_MANY_ARGS  = 10;
  +  static 
  +  {
  +    contents[ER_STRING_HAS_TOO_MANY_ARGS ][1] 
  +    = "string() has too many arguments.";
  +  }
  +
  +  public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS  = 11;
  +  static 
  +  {
  +    contents[ER_STRINGLENGTH_HAS_TOO_MANY_ARGS ][1] 
  +    = "string-length() has too many arguments.";
  +  }
  +
  +  public static final int ER_TRANSLATE_TAKES_3_ARGS  = 12;
  +  static 
  +  {
  +    contents[ER_TRANSLATE_TAKES_3_ARGS ][1] 
  +    = "The translate() function takes three arguments!";
  +  }
  +
  +  public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG  = 13;
  +  static 
     {
  -    contents[i][0] = getMKey(i);
  +    contents[ER_UNPARSEDENTITYURI_TAKES_1_ARG ][1] 
  +    = "The unparsed-entity-uri function should take one argument!";
     }
  -  for(int i = 1; i < MAX_WARNING+1; i++)
  +
  +  public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED  = 14;
  +  static 
  +  {
  +    contents[ER_NAMESPACEAXIS_NOT_IMPLEMENTED ][1] 
  +    = "namespace axis not implemented yet!";
  +  }
  +
  +  public static final int ER_UNKNOWN_AXIS  = 15;
  +  static 
  +  {
  +    contents[ER_UNKNOWN_AXIS ][1] 
  +    = "unknown axis: {0}";
  +  }
  +
  +  public static final int ER_UNKNOWN_MATCH_OPERATION  = 16;
  +  static 
  +  {
  +    contents[ER_UNKNOWN_MATCH_OPERATION ][1] 
  +    = "unknown match operation!";
  +  }
  +
  +  public static final int ER_INCORRECT_ARG_LENGTH  = 17;
  +  static 
  +  {
  +    contents[ER_INCORRECT_ARG_LENGTH ][1] 
  +    = "Arg length of processing-instruction() node test is incorrect!";
  +  }
  +
  +  public static final int ER_CANT_CONVERT_TO_NUMBER  = 18;
  +  static 
  +  {
  +    contents[ER_CANT_CONVERT_TO_NUMBER ][1] 
  +    = "Can not convert {0} to a number";
  +  }
  +
  +  public static final int ER_CANT_CONVERT_TO_NODELIST  = 19;
  +  static 
  +  {
  +    contents[ER_CANT_CONVERT_TO_NODELIST ][1] 
  +    = "Can not convert {0} to a NodeList!";
  +  }
  +
  +  public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST  = 20;
  +  static 
  +  {
  +    contents[ER_CANT_CONVERT_TO_MUTABLENODELIST ][1] 
  +    = "Can not convert {0} to a MutableNodeList!";
  +  }
  +
  +  public static final int ER_CANT_CONVERT_TO_TYPE  = 21;
  +  static 
  +  {
  +    contents[ER_CANT_CONVERT_TO_TYPE ][1] 
  +    = "Can not convert {0} to a type#{1}";
  +  }
  +
  +  public static final int ER_EXPECTED_MATCH_PATTERN  = 22;
  +  static 
  +  {
  +    contents[ER_EXPECTED_MATCH_PATTERN ][1] 
  +    = "Expected match pattern in getMatchScore!";
  +  }
  +
  +  public static final int ER_COULDNOT_GET_VAR_NAMED  = 23;
  +  static 
  +  {
  +    contents[ER_COULDNOT_GET_VAR_NAMED ][1] 
  +    = "Could not get variable named {0}";
  +  }
  +
  +  public static final int ER_UNKNOWN_OPCODE  = 24;
  +  static 
  +  {
  +    contents[ER_UNKNOWN_OPCODE ][1] 
  +    = "ERROR! Unknown op code: {0}";
  +  }
  +
  +  public static final int ER_EXTRA_ILLEGAL_TOKENS  = 25;
  +  static 
  +  {
  +    contents[ER_EXTRA_ILLEGAL_TOKENS ][1] 
  +    = "Extra illegal tokens: {0}";
  +  }
  +
  +  public static final int ER_EXPECTED_DOUBLE_QUOTE  = 26;
  +  static 
  +  {
  +    contents[ER_EXPECTED_DOUBLE_QUOTE ][1] 
  +    = "misquoted literal... expected double quote!";
  +  }
  +
  +  public static final int ER_EXPECTED_SINGLE_QUOTE  = 27;
  +  static 
  +  {
  +    contents[ER_EXPECTED_SINGLE_QUOTE ][1] 
  +    = "misquoted literal... expected single quote!";
  +  }
  +
  +  public static final int ER_EMPTY_EXPRESSION  = 28;
  +  static 
  +  {
  +    contents[ER_EMPTY_EXPRESSION ][1] 
  +    = "Empty expression!";
  +  }
  +
  +  public static final int ER_EXPECTED_BUT_FOUND  = 29;
  +  static 
  +  {
  +    contents[ER_EXPECTED_BUT_FOUND ][1] 
  +    = "Expected {0}, but found: {1}";
  +  }
  +
  +  public static final int ER_INCORRECT_PROGRAMMER_ASSERTION  = 30;
  +  static 
     {
  -    contents[i+ MAX_CODE][0] = getWKey(i);
  +    contents[ER_INCORRECT_PROGRAMMER_ASSERTION ][1] 
  +    = "Programmer assertion is incorrect! - {0}";
     }
  -}
  -
  -/*
  - * Now fill in the message text.
  - * First create an int for the message code. Make sure you 
  - * update MAX_CODE for error messages and MAX_WARNING for warnings
  - * Then fill in the message text for that message code in the
  - * array. Use the new error code as the index into the array.
  - */ 
  -
  -// Error messages...
  -
  -public static final int ERROR0000 = 0;
  -static {contents[ERROR0000][1] 
  -          = "{0}";
  -}
  -
  -public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
  -static {contents[ER_CURRENT_NOT_ALLOWED_IN_MATCH][1] 
  -          = "The current() function is not allowed in a match pattern!";
  -}
  -
  -public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
  -static {contents[ER_CURRENT_TAKES_NO_ARGS][1] 
  -          = "The current() function does not accept arguments!";
  -}
  -
  -public static final int ER_DOCUMENT_REPLACED = 3;
  -static {contents[ER_DOCUMENT_REPLACED][1] 
  -          = "document() function implementation has been replaced by org.apache.xalan.xslt.FuncDocument!";
  -}
  -
  -public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
  -static {contents[ER_CONTEXT_HAS_NO_OWNERDOC][1] 
  -          = "context does not have an owner document!";
  -}
  -
  -public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS  = 5;
  -static {contents[ER_LOCALNAME_HAS_TOO_MANY_ARGS ][1] 
  -          = "local-name() has too many arguments.";
  -}
  -
  -public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS  = 6;
  -static {contents[ER_NAMESPACEURI_HAS_TOO_MANY_ARGS ][1] 
  -          = "namespace-uri() has too many arguments.";
  -}
  -
  -public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS  = 7;
  -static {contents[ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS ][1] 
  -          = "normalize-space() has too many arguments.";
  -}
  -
  -public static final int ER_NUMBER_HAS_TOO_MANY_ARGS  = 8;
  -static {contents[ER_NUMBER_HAS_TOO_MANY_ARGS ][1] 
  -          = "number() has too many arguments.";
  -}
  -
  -public static final int ER_NAME_HAS_TOO_MANY_ARGS  = 9;
  -static {contents[ER_NAME_HAS_TOO_MANY_ARGS ][1] 
  -          = "name() has too many arguments.";
  -}
  -
  -public static final int ER_STRING_HAS_TOO_MANY_ARGS  = 10;
  -static {contents[ER_STRING_HAS_TOO_MANY_ARGS ][1] 
  -          = "string() has too many arguments.";
  -}
  -
  -public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS  = 11;
  -static {contents[ER_STRINGLENGTH_HAS_TOO_MANY_ARGS ][1] 
  -          = "string-length() has too many arguments.";
  -}
  -
  -public static final int ER_TRANSLATE_TAKES_3_ARGS  = 12;
  -static {contents[ER_TRANSLATE_TAKES_3_ARGS ][1] 
  -          = "The translate() function takes three arguments!";
  -}
  -
  -public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG  = 13;
  -static {contents[ER_UNPARSEDENTITYURI_TAKES_1_ARG ][1] 
  -          = "The unparsed-entity-uri function should take one argument!";
  -}
  -
  -public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED  = 14;
  -static {contents[ER_NAMESPACEAXIS_NOT_IMPLEMENTED ][1] 
  -          = "namespace axis not implemented yet!";
  -}
  -
  -public static final int ER_UNKNOWN_AXIS  = 15;
  -static {contents[ER_UNKNOWN_AXIS ][1] 
  -          = "unknown axis: {0}";
  -}
  -
  -public static final int ER_UNKNOWN_MATCH_OPERATION  = 16;
  -static {contents[ER_UNKNOWN_MATCH_OPERATION ][1] 
  -          = "unknown match operation!";
  -}
  -
  -public static final int ER_INCORRECT_ARG_LENGTH  = 17;
  -static {contents[ER_INCORRECT_ARG_LENGTH ][1] 
  -          = "Arg length of processing-instruction() node test is incorrect!";
  -}
  -
  -public static final int ER_CANT_CONVERT_TO_NUMBER  = 18;
  -static {contents[ER_CANT_CONVERT_TO_NUMBER ][1] 
  -          = "Can not convert {0} to a number";
  -}
  -
  -public static final int ER_CANT_CONVERT_TO_NODELIST  = 19;
  -static {contents[ER_CANT_CONVERT_TO_NODELIST ][1] 
  -          = "Can not convert {0} to a NodeList!";
  -}
  -
  -public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST  = 20;
  -static {contents[ER_CANT_CONVERT_TO_MUTABLENODELIST ][1] 
  -          = "Can not convert {0} to a MutableNodeList!";
  -}
  -
  -public static final int ER_CANT_CONVERT_TO_TYPE  = 21;
  -static {contents[ER_CANT_CONVERT_TO_TYPE ][1] 
  -          = "Can not convert {0} to a type#{1}";
  -}
  -
  -public static final int ER_EXPECTED_MATCH_PATTERN  = 22;
  -static {contents[ER_EXPECTED_MATCH_PATTERN ][1] 
  -          = "Expected match pattern in getMatchScore!";
  -}
  -
  -public static final int ER_COULDNOT_GET_VAR_NAMED  = 23;
  -static {contents[ER_COULDNOT_GET_VAR_NAMED ][1] 
  -          = "Could not get variable named {0}";
  -}
  -
  -public static final int ER_UNKNOWN_OPCODE  = 24;
  -static {contents[ER_UNKNOWN_OPCODE ][1] 
  -          = "ERROR! Unknown op code: {0}";
  -}
  -
  -public static final int ER_EXTRA_ILLEGAL_TOKENS  = 25;
  -static {contents[ER_EXTRA_ILLEGAL_TOKENS ][1] 
  -          = "Extra illegal tokens: {0}";
  -}
  -
  -public static final int ER_EXPECTED_DOUBLE_QUOTE  = 26;
  -static {contents[ER_EXPECTED_DOUBLE_QUOTE ][1] 
  -          = "misquoted literal... expected double quote!";
  -}
  -
  -public static final int ER_EXPECTED_SINGLE_QUOTE  = 27;
  -static {contents[ER_EXPECTED_SINGLE_QUOTE ][1] 
  -          = "misquoted literal... expected single quote!";
  -}
  -
  -public static final int ER_EMPTY_EXPRESSION  = 28;
  -static {contents[ER_EMPTY_EXPRESSION ][1] 
  -          = "Empty expression!";
  -}
  -
  -public static final int ER_EXPECTED_BUT_FOUND  = 29;
  -static {contents[ER_EXPECTED_BUT_FOUND ][1] 
  -          = "Expected {0}, but found: {1}";
  -}
  -
  -public static final int ER_INCORRECT_PROGRAMMER_ASSERTION  = 30;
  -static {contents[ER_INCORRECT_PROGRAMMER_ASSERTION ][1] 
  -          = "Programmer assertion is incorrect! - {0}";
  -}
  -
  -public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL  = 31;
  -static {contents[ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL ][1] 
  -          = "boolean(...) argument is no longer optional with 19990709 XPath draft.";
  -}
  -
  -public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG  = 32;
  -static {contents[ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG ][1] 
  -          = "Found ',' but no preceding argument!";
  -}
  -
  -public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG  = 33;
  -static {contents[ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG ][1] 
  -          = "Found ',' but no following argument!";
  -}
  -
  -public static final int ER_PREDICATE_ILLEGAL_SYNTAX  = 34;
  -static {contents[ER_PREDICATE_ILLEGAL_SYNTAX ][1] 
  -          = "'..[predicate]' or '.[predicate]' is illegal syntax.  Use 'self::node()[predicate]' instead.";
  -}
  -
  -public static final int ER_ILLEGAL_AXIS_NAME  = 35;
  -static {contents[ER_ILLEGAL_AXIS_NAME ][1] 
  -          = "illegal axis name: {0}";
  -}
  -
  -public static final int ER_UNKNOWN_NODETYPE  = 36;
  -static {contents[ER_UNKNOWN_NODETYPE ][1] 
  -          = "Unknown nodetype: {0}";
  -}
  -
  -public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED  = 37;
  -static {contents[ER_PATTERN_LITERAL_NEEDS_BE_QUOTED ][1] 
  -          = "Pattern literal ({0}) needs to be quoted!";
  -}
  -
  -public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER  = 38;
  -static {contents[ER_COULDNOT_BE_FORMATTED_TO_NUMBER ][1] 
  -          = "{0} could not be formatted to a number!";
  -}
  -
  -public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON  = 39;
  -static {contents[ER_COULDNOT_CREATE_XMLPROCESSORLIAISON ][1] 
  -          = "Could not create XML Processor Liaison: {0}";
  -}
  -
  -public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP  = 40;
  -static {contents[ER_DIDNOT_FIND_XPATH_SELECT_EXP ][1] 
  -          = "Error! Did not find xpath select expression (-select).";
  -}
  -
  -public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH  = 41;
  -static {contents[ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH ][1] 
  -          = "ERROR! Could not find ENDOP after OP_LOCATIONPATH";
  -}
  -
  -public static final int ER_ERROR_OCCURED  = 42;
  -static {contents[ER_ERROR_OCCURED ][1] 
  -          = "Error occured!";
  -}
  -
  -public static final int ER_ILLEGAL_VARIABLE_REFERENCE  = 43;
  -static {contents[ER_ILLEGAL_VARIABLE_REFERENCE][1] 
  -          = "VariableReference given for variable out of context or without definition!  Name = {0}";
  -}
  -
  -public static final int ER_AXES_NOT_ALLOWED  = 44;
  -static {contents[ER_AXES_NOT_ALLOWED][1] 
  -          = "Only child:: and attribute:: axes are allowed in match patterns!  Offending axes = {0}";
  -}
  -
  -public static final int ER_KEY_HAS_TOO_MANY_ARGS  = 45;
  -static {contents[ER_KEY_HAS_TOO_MANY_ARGS ][1] 
  -          = "key() has an incorrect number of arguments.";
  -}
  -
  -public static final int ER_COUNT_TAKES_1_ARG  = 46;
  -static {contents[ER_COUNT_TAKES_1_ARG ][1] 
  -          = "The count function should take one argument!";
  -}
  -
  -public static final int ER_COULDNOT_FIND_FUNCTION  = 47;
  -static {contents[ER_COULDNOT_FIND_FUNCTION ][1] 
  -          = "Could not find function: {0}";
  -}
  -
  -
  -// Warnings...
  -
  -public static final int WG_LOCALE_NAME_NOT_HANDLED  = 1;
  -static {contents[WG_LOCALE_NAME_NOT_HANDLED  + MAX_CODE][1] 
  -          = "locale name in the format-number function not yet handled!";
  -}
  -
  -public static final int WG_PROPERTY_NOT_SUPPORTED  = 2;
  -static {contents[WG_PROPERTY_NOT_SUPPORTED  + MAX_CODE][1] 
  -          = "XSL Property not supported: {0}";
  -}
  -
  -public static final int WG_DONT_DO_ANYTHING_WITH_NS  = 3;
  -static {contents[WG_DONT_DO_ANYTHING_WITH_NS  + MAX_CODE][1] 
  -          = "Do not currently do anything with namespace {0} in property: {1}";
  -}
  -
  -public static final int WG_SECURITY_EXCEPTION  = 4;
  -static {contents[WG_SECURITY_EXCEPTION  + MAX_CODE][1] 
  -          = "SecurityException when trying to access XSL system property: {0}";
  -}
  -
  -public static final int WG_QUO_NO_LONGER_DEFINED  = 5;
  -static {contents[WG_QUO_NO_LONGER_DEFINED  + MAX_CODE][1] 
  -          = "Old syntax: quo(...) is no longer defined in XPath.";
  -}
  -
  -
  -public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST  = 6;
  -static {contents[WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST  + MAX_CODE][1] 
  -          = "XPath needs a derived object to implement nodeTest!";
  -}
  -
  -public static final int WG_FUNCTION_TOKEN_NOT_FOUND  = 7;
  -static {contents[WG_FUNCTION_TOKEN_NOT_FOUND  + MAX_CODE][1] 
  -          = "function token not found.";
  -}
  -
  -public static final int WG_COULDNOT_FIND_FUNCTION  = 8;
  -static {contents[WG_COULDNOT_FIND_FUNCTION  + MAX_CODE][1] 
  -          = "Could not find function: {0}";
  -}
  -
  -public static final int WG_CANNOT_MAKE_URL_FROM  = 9;
  -static {contents[WG_CANNOT_MAKE_URL_FROM  + MAX_CODE][1] 
  -          = "Can not make URL from: {0}";
  -}
  -
  -public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED  = 10;
  -static {contents[WG_EXPAND_ENTITIES_NOT_SUPPORTED  + MAX_CODE][1] 
  -          = "-E option not supported for DTM parser";
  -}
  -
  -// Other miscellaneous text used inside the code...
  -
  -static  {
  -         
  -         contents[MAX_MESSAGES][0] = "ui_language";
  -         contents[MAX_MESSAGES][1] = "en";
  -         
  -         contents[MAX_MESSAGES + 1][0] = "help_language";
  -         contents[MAX_MESSAGES + 1][1] = "en";
  -         
  -         contents[MAX_MESSAGES + 2][0] = "language";
  -         contents[MAX_MESSAGES + 2][1] = "en";
  -         
  -         contents[MAX_MESSAGES + 3][0] = "BAD_CODE";
  -         contents[MAX_MESSAGES + 3][1] = "Parameter to createMessage was out of bounds";
  +
  +  public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL  = 31;
  +  static 
  +  {
  +    contents[ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL ][1] 
  +    = "boolean(...) argument is no longer optional with 19990709 XPath draft.";
  +  }
  +
  +  public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG  = 32;
  +  static 
  +  {
  +    contents[ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG ][1] 
  +    = "Found ',' but no preceding argument!";
  +  }
  +
  +  public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG  = 33;
  +  static 
  +  {
  +    contents[ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG ][1] 
  +    = "Found ',' but no following argument!";
  +  }
  +
  +  public static final int ER_PREDICATE_ILLEGAL_SYNTAX  = 34;
  +  static 
  +  {
  +    contents[ER_PREDICATE_ILLEGAL_SYNTAX ][1] 
  +    = "'..[predicate]' or '.[predicate]' is illegal syntax.  Use 'self::node()[predicate]' instead.";
  +  }
  +
  +  public static final int ER_ILLEGAL_AXIS_NAME  = 35;
  +  static 
  +  {
  +    contents[ER_ILLEGAL_AXIS_NAME ][1] 
  +    = "illegal axis name: {0}";
  +  }
  +
  +  public static final int ER_UNKNOWN_NODETYPE  = 36;
  +  static 
  +  {
  +    contents[ER_UNKNOWN_NODETYPE ][1] 
  +    = "Unknown nodetype: {0}";
  +  }
  +
  +  public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED  = 37;
  +  static 
  +  {
  +    contents[ER_PATTERN_LITERAL_NEEDS_BE_QUOTED ][1] 
  +    = "Pattern literal ({0}) needs to be quoted!";
  +  }
  +
  +  public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER  = 38;
  +  static 
  +  {
  +    contents[ER_COULDNOT_BE_FORMATTED_TO_NUMBER ][1] 
  +    = "{0} could not be formatted to a number!";
  +  }
  +
  +  public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON  = 39;
  +  static 
  +  {
  +    contents[ER_COULDNOT_CREATE_XMLPROCESSORLIAISON ][1] 
  +    = "Could not create XML Processor Liaison: {0}";
  +  }
  +
  +  public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP  = 40;
  +  static 
  +  {
  +    contents[ER_DIDNOT_FIND_XPATH_SELECT_EXP ][1] 
  +    = "Error! Did not find xpath select expression (-select).";
  +  }
  +
  +  public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH  = 41;
  +  static 
  +  {
  +    contents[ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH ][1] 
  +    = "ERROR! Could not find ENDOP after OP_LOCATIONPATH";
  +  }
  +
  +  public static final int ER_ERROR_OCCURED  = 42;
  +  static 
  +  {
  +    contents[ER_ERROR_OCCURED ][1] 
  +    = "Error occured!";
  +  }
  +
  +  public static final int ER_ILLEGAL_VARIABLE_REFERENCE  = 43;
  +  static 
  +  {
  +    contents[ER_ILLEGAL_VARIABLE_REFERENCE][1] 
  +    = "VariableReference given for variable out of context or without definition!  Name = {0}";
  +  }
  +
  +  public static final int ER_AXES_NOT_ALLOWED  = 44;
  +  static 
  +  {
  +    contents[ER_AXES_NOT_ALLOWED][1] 
  +    = "Only child:: and attribute:: axes are allowed in match patterns!  Offending axes = {0}";
  +  }
  +
  +  public static final int ER_KEY_HAS_TOO_MANY_ARGS  = 45;
  +  static 
  +  {
  +    contents[ER_KEY_HAS_TOO_MANY_ARGS ][1] 
  +    = "key() has an incorrect number of arguments.";
  +  }
  +
  +  public static final int ER_COUNT_TAKES_1_ARG  = 46;
  +  static 
  +  {
  +    contents[ER_COUNT_TAKES_1_ARG ][1] 
  +    = "The count function should take one argument!";
  +  }
  +
  +  public static final int ER_COULDNOT_FIND_FUNCTION  = 47;
  +  static 
  +  {
  +    contents[ER_COULDNOT_FIND_FUNCTION ][1] 
  +    = "Could not find function: {0}";
  +  }
  +
  +
  +  // Warnings...
  +
  +  public static final int WG_LOCALE_NAME_NOT_HANDLED  = 1;
  +  static 
  +  {
  +    contents[WG_LOCALE_NAME_NOT_HANDLED  + MAX_CODE][1] 
  +    = "locale name in the format-number function not yet handled!";
  +  }
  +
  +  public static final int WG_PROPERTY_NOT_SUPPORTED  = 2;
  +  static 
  +  {
  +    contents[WG_PROPERTY_NOT_SUPPORTED  + MAX_CODE][1] 
  +    = "XSL Property not supported: {0}";
  +  }
  +
  +  public static final int WG_DONT_DO_ANYTHING_WITH_NS  = 3;
  +  static 
  +  {
  +    contents[WG_DONT_DO_ANYTHING_WITH_NS  + MAX_CODE][1] 
  +    = "Do not currently do anything with namespace {0} in property: {1}";
  +  }
  +
  +  public static final int WG_SECURITY_EXCEPTION  = 4;
  +  static 
  +  {
  +    contents[WG_SECURITY_EXCEPTION  + MAX_CODE][1] 
  +    = "SecurityException when trying to access XSL system property: {0}";
  +  }
  +
  +  public static final int WG_QUO_NO_LONGER_DEFINED  = 5;
  +  static 
  +  {
  +    contents[WG_QUO_NO_LONGER_DEFINED  + MAX_CODE][1] 
  +    = "Old syntax: quo(...) is no longer defined in XPath.";
  +  }
  +
  +
  +  public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST  = 6;
  +  static 
  +  {
  +    contents[WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST  + MAX_CODE][1] 
  +    = "XPath needs a derived object to implement nodeTest!";
  +  }
  +
  +  public static final int WG_FUNCTION_TOKEN_NOT_FOUND  = 7;
  +  static 
  +  {
  +    contents[WG_FUNCTION_TOKEN_NOT_FOUND  + MAX_CODE][1] 
  +    = "function token not found.";
  +  }
  +
  +  public static final int WG_COULDNOT_FIND_FUNCTION  = 8;
  +  static 
  +  {
  +    contents[WG_COULDNOT_FIND_FUNCTION  + MAX_CODE][1] 
  +    = "Could not find function: {0}";
  +  }
  +
  +  public static final int WG_CANNOT_MAKE_URL_FROM  = 9;
  +  static 
  +  {
  +    contents[WG_CANNOT_MAKE_URL_FROM  + MAX_CODE][1] 
  +    = "Can not make URL from: {0}";
  +  }
  +
  +  public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED  = 10;
  +  static 
  +  {
  +    contents[WG_EXPAND_ENTITIES_NOT_SUPPORTED  + MAX_CODE][1] 
  +    = "-E option not supported for DTM parser";
  +  }
  +
  +  // Other miscellaneous text used inside the code...
  +
  +  static  
  +  {
  +    
  +    contents[MAX_MESSAGES][0] = "ui_language";
  +    contents[MAX_MESSAGES][1] = "en";
  +    
  +    contents[MAX_MESSAGES + 1][0] = "help_language";
  +    contents[MAX_MESSAGES + 1][1] = "en";
  +    
  +    contents[MAX_MESSAGES + 2][0] = "language";
  +    contents[MAX_MESSAGES + 2][1] = "en";
  +    
  +    contents[MAX_MESSAGES + 3][0] = "BAD_CODE";
  +    contents[MAX_MESSAGES + 3][1] = "Parameter to createMessage was out of bounds";
  +    
  +    contents[MAX_MESSAGES + 4][0] = "FORMAT_FAILED";
  +    contents[MAX_MESSAGES + 4][1] = "Exception thrown during messageFormat call";
  +    
  +    contents[MAX_MESSAGES + 5][0] = "version";
  +    contents[MAX_MESSAGES + 5][1] = ">>>>>>> XSLT4J Version ";
  +    
  +    contents[MAX_MESSAGES + 6][0] = "version2";
  +    contents[MAX_MESSAGES + 6][1] = "<<<<<<<";
  +    
  +    contents[MAX_MESSAGES + 7][0] = "yes";
  +    contents[MAX_MESSAGES + 7][1] = "yes";
  +    
  +    contents[MAX_MESSAGES + 8][0] = "line";
  +    contents[MAX_MESSAGES + 8][1] = "Line #";
  +    
  +    contents[MAX_MESSAGES + 9][0] = "column";
  +    contents[MAX_MESSAGES + 9][1] = "Column #";
  +    
  +    contents[MAX_MESSAGES + 10][0] = "xsldone";
  +    contents[MAX_MESSAGES + 10][1] = "XSLProcessor: done";
  +    
  +    contents[MAX_MESSAGES + 11][0] = "xpath_option";
  +    contents[MAX_MESSAGES + 11][1] = "xpath options: ";
  +    
  +    contents[MAX_MESSAGES + 12][0] = "optionIN";
  +    contents[MAX_MESSAGES + 12][1] = "   [-in inputXMLURL]";
  +    
  +    contents[MAX_MESSAGES + 13][0] = "optionSelect";
  +    contents[MAX_MESSAGES + 13][1] = "   [-select xpath expression]";
  +    
  +    contents[MAX_MESSAGES + 14][0] = "optionMatch";
  +    contents[MAX_MESSAGES + 14][1] = "   [-match match pattern (for match diagnostics)]";
  +    
  +    contents[MAX_MESSAGES + 15][0] = "optionAnyExpr";
  +    contents[MAX_MESSAGES + 15][1] = "Or just an xpath expression will do a diagnostic dump";
  +    
  +
  +    contents[MAX_MESSAGES + 16][0] = "noParsermsg1";
  +    contents[MAX_MESSAGES + 16][1] = "XSL Process was not successful.";
  +    
  +    contents[MAX_MESSAGES + 17][0] = "noParsermsg2";
  +    contents[MAX_MESSAGES + 17][1] = "** Could not find parser **";
  +
  +    contents[MAX_MESSAGES + 18][0] = "noParsermsg3";
  +    contents[MAX_MESSAGES + 18][1] = "Please check your classpath.";
  +
  +    contents[MAX_MESSAGES + 19][0] = "noParsermsg4"; 
  +    contents[MAX_MESSAGES + 19][1] = "If you don't have IBM's XML Parser for Java, you can download it from";
  +    
  +    contents[MAX_MESSAGES + 20][0] = "noParsermsg5";
  +    contents[MAX_MESSAGES + 20][1] = "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml";
  +  }
  +
  +  // ================= INFRASTRUCTURE ======================
  +
  +  public static final String BAD_CODE = "BAD_CODE";
  +  public static final String FORMAT_FAILED = "FORMAT_FAILED";
  +
  +  public static final String ERROR_RESOURCES = "org.apache.xalan.xpath.res.XPATHErrorResources";
     
  -         contents[MAX_MESSAGES + 4][0] = "FORMAT_FAILED";
  -         contents[MAX_MESSAGES + 4][1] = "Exception thrown during messageFormat call";
  -         
  -         contents[MAX_MESSAGES + 5][0] = "version";
  -         contents[MAX_MESSAGES + 5][1] = ">>>>>>> XSLT4J Version ";
  -         
  -         contents[MAX_MESSAGES + 6][0] = "version2";
  -         contents[MAX_MESSAGES + 6][1] = "<<<<<<<";
  -         
  -         contents[MAX_MESSAGES + 7][0] = "yes";
  -         contents[MAX_MESSAGES + 7][1] = "yes";
  -         
  -         contents[MAX_MESSAGES + 8][0] = "line";
  -         contents[MAX_MESSAGES + 8][1] = "Line #";
  -         
  -         contents[MAX_MESSAGES + 9][0] = "column";
  -         contents[MAX_MESSAGES + 9][1] = "Column #";
  -         
  -         contents[MAX_MESSAGES + 10][0] = "xsldone";
  -         contents[MAX_MESSAGES + 10][1] = "XSLProcessor: done";
  -         
  -         contents[MAX_MESSAGES + 11][0] = "xpath_option";
  -         contents[MAX_MESSAGES + 11][1] = "xpath options: ";
  -         
  -         contents[MAX_MESSAGES + 12][0] = "optionIN";
  -         contents[MAX_MESSAGES + 12][1] = "   [-in inputXMLURL]";
  -         
  -         contents[MAX_MESSAGES + 13][0] = "optionSelect";
  -         contents[MAX_MESSAGES + 13][1] = "   [-select xpath expression]";
  -         
  -         contents[MAX_MESSAGES + 14][0] = "optionMatch";
  -         contents[MAX_MESSAGES + 14][1] = "   [-match match pattern (for match diagnostics)]";
  -         
  -         contents[MAX_MESSAGES + 15][0] = "optionAnyExpr";
  -         contents[MAX_MESSAGES + 15][1] = "Or just an xpath expression will do a diagnostic dump";
  -         
  -
  -         contents[MAX_MESSAGES + 16][0] = "noParsermsg1";
  -         contents[MAX_MESSAGES + 16][1] = "XSL Process was not successful.";
  -         
  -         contents[MAX_MESSAGES + 17][0] = "noParsermsg2";
  -         contents[MAX_MESSAGES + 17][1] = "** Could not find parser **";
  -
  -         contents[MAX_MESSAGES + 18][0] = "noParsermsg3";
  -         contents[MAX_MESSAGES + 18][1] = "Please check your classpath.";
  -
  -         contents[MAX_MESSAGES + 19][0] = "noParsermsg4"; 
  -         contents[MAX_MESSAGES + 19][1] = "If you don't have IBM's XML Parser for Java, you can download it from";
  -         
  -         contents[MAX_MESSAGES + 20][0] = "noParsermsg5";
  -         contents[MAX_MESSAGES + 20][1] = "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml";
  -  }
  -
  -// ================= INFRASTRUCTURE ======================
  -
  -public static final String BAD_CODE = "BAD_CODE";
  -public static final String FORMAT_FAILED = "FORMAT_FAILED";
  -
  -public static final String ERROR_RESOURCES = "org.apache.xalan.xpath.res.XPATHErrorResources";
  - 
  -public static final String ERROR_STRING = "#error";
  -public static final String ERROR_HEADER = "Error: ";
  -public static final String WARNING_HEADER = "Warning: ";
  -public static final String XSL_HEADER = "XSL ";
  -public static final String XML_HEADER = "XML ";
  -public static final String QUERY_HEADER = "PATTERN ";
  +  public static final String ERROR_STRING = "#error";
  +  public static final String ERROR_HEADER = "Error: ";
  +  public static final String WARNING_HEADER = "Warning: ";
  +  public static final String XSL_HEADER = "XSL ";
  +  public static final String XML_HEADER = "XML ";
  +  public static final String QUERY_HEADER = "PATTERN ";
   
  -public Object[][] getContents()
  -{
  -	return contents;
  -}
  +  public Object[][] getContents()
  +  {
  +    return contents;
  +  }
   
  -/**
  +  /**
      * Return a named ResourceBundle for a particular locale.  This method mimics the behavior
      * of ResourceBundle.getBundle(). 
      *
  @@ -447,27 +565,27 @@
      * @throws MissingResourceException  
      */
     public static final XPATHErrorResources loadResourceBundle (String className) 
  -	  throws MissingResourceException
  +    throws MissingResourceException
     {
  -	Locale locale = Locale.getDefault();
  -	String suffix = getResourceSuffix(locale);  
  +    Locale locale = Locale.getDefault();
  +    String suffix = getResourceSuffix(locale);  
       try
       {		
  -                                                           // first try with the given locale
  +      // first try with the given locale
         return (XPATHErrorResources)ResourceBundle.getBundle (className + suffix, locale);
       }
       catch (MissingResourceException e)
       {
         try                                                  // try to fall back to en_US if we can't load
         {
  -                                                           // Since we can't find the localized property file,
  -                                                           // fall back to en_US.
  +        // Since we can't find the localized property file,
  +        // fall back to en_US.
           return (XPATHErrorResources)ResourceBundle.getBundle (className, new Locale ("en", "US"));
         }
         catch (MissingResourceException e2)
         {
  -                                                              // Now we are really in trouble.
  -                                                              // very bad, definitely very bad...not going to get very far
  +        // Now we are really in trouble.
  +        // very bad, definitely very bad...not going to get very far
           throw new MissingResourceException ("Could not load any resource bundles.", className, "");
         }
       }
  @@ -483,14 +601,14 @@
      */        
     private static final String getResourceSuffix(Locale locale)
     {
  -        String suffix = "_" + locale.getLanguage();
  -        
  -        String country = locale.getCountry();        
  -        
  -        if (country.equals("TW"))
  -            suffix += "_" + country;
  +    String suffix = "_" + locale.getLanguage();
  +    
  +    String country = locale.getCountry();        
  +    
  +    if (country.equals("TW"))
  +      suffix += "_" + country;
   
  -        return suffix;
  +    return suffix;
     }
     
     /**
  @@ -498,7 +616,7 @@
      */ 
     public String getMessageKey(int errorCode)
     {
  -	  if (errorCode > MAX_CODE)
  +    if (errorCode > MAX_CODE)
         return null;
       else
       {
  @@ -512,10 +630,10 @@
      */ 
     public String getWarningKey(int errorCode)
     {
  -	  if (errorCode > MAX_WARNING)
  +    if (errorCode > MAX_WARNING)
         return null;
  -	  else 
  -		{
  +    else 
  +    {
         DecimalFormat df = new DecimalFormat("0000");
         return WARNING_SUFFIX + df.format(errorCode);	
       }
  @@ -526,7 +644,7 @@
      */ 
     public static String getMKey(int errorCode)
     {
  -	  if (errorCode > MAX_CODE)
  +    if (errorCode > MAX_CODE)
         return null;
       else
       {
  @@ -540,10 +658,10 @@
      */ 
     public static String getWKey(int errorCode)
     {
  -	  if (errorCode > MAX_WARNING)
  +    if (errorCode > MAX_WARNING)
         return null;
  -	  else 
  -		{
  +    else 
  +    {
         DecimalFormat df = new DecimalFormat("0000");
         return WARNING_SUFFIX + df.format(errorCode);	
       }
  
  
  
  1.8       +6 -3      xml-xalan/src/org/apache/xalan/xpath/res/XPATHErrorResources_en.java
  
  Index: XPATHErrorResources_en.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/res/XPATHErrorResources_en.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XPATHErrorResources_en.java	2000/01/05 23:05:29	1.7
  +++ XPATHErrorResources_en.java	2000/03/02 10:22:45	1.8
  @@ -1,8 +1,11 @@
   package org.apache.xalan.xpath.res;
   import java.util.*;
  -//
  -//  LangResources_en.properties
  -//
  +
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Default implementation of XPATHErrorResources.  This is just 
  + * an empty class.
  + */
   public class XPATHErrorResources_en extends XPATHErrorResources 
   {    
   }
  
  
  
  1.11      +71 -120   xml-xalan/src/org/apache/xalan/xpath/xdom/XercesLiaison.java
  
  Index: XercesLiaison.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xdom/XercesLiaison.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XercesLiaison.java	2000/02/28 22:08:04	1.10
  +++ XercesLiaison.java	2000/03/02 10:22:46	1.11
  @@ -68,7 +68,10 @@
   import org.apache.xalan.xpath.*;
   
   /**
  - * Provides XSLTProcessor an interface to the Xerces XML parser.
  + * <meta name="usage" content="general"/>
  + * Provides XSLTProcessor an interface to the Xerces XML parser.  This 
  + * liaison should be used if Xerces DOM nodes are being process as 
  + * the source tree or as the result tree.
    * @see org.apache.xalan.xslt.XSLTProcessor
    * @see org.apache.xml.parsers
    */
  @@ -82,20 +85,13 @@
       return "XML4J Version "+ getXML4JVersionString();
     }
   
  -  public static final String XML4J_VERSION = "XML4J 2.0.15";
  -
     /**
  -   * Flag to make sure we only do the version check once.
  +   * Constructor that takes SAX ErrorHandler as an argument. The error handler
  +   * is registered with the XML Parser. Any XML-related errors will be reported
  +   * to the calling application using this error handler.
  +   *
  +   * @param	errorHandler SAX ErrorHandler instance.
      */
  -  transient private boolean m_didVersionCheck = false;
  -
  -  /**
  -  * Constructor that takes SAX ErrorHandler as an argument. The error handler
  -  * is registered with the XML Parser. Any XML-related errors will be reported
  -  * to the calling application using this error handler.
  -  *
  -  * @param	errorHandler SAX ErrorHandler instance.
  -  */
     public XercesLiaison(org.xml.sax.ErrorHandler errorHandler)
     {
       m_errorHandler = errorHandler;
  @@ -117,13 +113,14 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Check node to see if it matches this liaison.
      */
     public void checkNode(Node node)
       throws SAXException
     {
       if(!(node instanceof org.apache.xerces.dom.NodeImpl))
  -       throw new SAXException("XercesLiaison can not handle nodes of type"
  +      throw new SAXException("XercesLiaison can not handle nodes of type"
           +((Object)node).getClass());
     }
   
  @@ -137,6 +134,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Get Xerces version field... we have to do this 'cause
      * the "public static final" fields seem to get bound
      * at compile time otherwise.
  @@ -156,11 +154,8 @@
       return version;
     }
   
  -  private static final int MAJOR = 1;
  -  private static final int MINOR = 2;
  -  private static final int SUBMINOR = 3;
  -
     /**
  +   * <meta name="usage" content="internal"/>
      * Get one of the Xerces version numbers...
      * we have to do this 'cause the "public static final"
      * fields seem to get bound at compile time otherwise.
  @@ -181,69 +176,34 @@
       return versionNum;
     }
   
  -
     /**
  -   * Check the Xerces version number
  +   * <meta name="usage" content="internal"/>
  +   * Parse an XML document.
  +   *
  +   * <p>The application can use this method to instruct the SAX parser
  +   * to begin parsing an XML document from any valid input
  +   * source (a character stream, a byte stream, or a URI).</p>
  +   *
  +   * <p>Applications may not invoke this method while a parse is in
  +   * progress (they should create a new Parser instead for each
  +   * additional XML document).  Once a parse is complete, an
  +   * application may reuse the same Parser object, possibly with a
  +   * different input source.</p>
  +   *
  +   * @param source The input source for the top-level of the
  +   *        XML document.
  +   * @exception org.xml.sax.SAXException Any SAX exception, possibly
  +   *            wrapping another exception.
  +   * @exception java.io.IOException An IO exception from the parser,
  +   *            possibly from a byte stream or character stream
  +   *            supplied by the application.
  +   * @see org.xml.sax.InputSource
  +   * @see #parse(java.lang.String)
  +   * @see #setEntityResolver
  +   * @see #setDTDHandler
  +   * @see #setDocumentHandler
  +   * @see #setErrorHandler
      */
  -  public void checkXML4JVersion()
  -  {
  -
  -    // Only do this once
  -    if(!m_didVersionCheck)
  -    {
  -      if(!getXML4JVersionString().equals(XML4J_VERSION))
  -      {
  -        if(((getXML4JVersionNum(MAJOR) == 2)
  -            && (getXML4JVersionNum(MINOR) == 0)
  -            && (getXML4JVersionNum(SUBMINOR) >= 14))
  -           ||
  -           ((getXML4JVersionNum(MAJOR) == 2)
  -            && (getXML4JVersionNum(MINOR) > 0))
  -           ||
  -           (getXML4JVersionNum(MAJOR) > 2))
  -        {
  -          System.out.println("Found version "+getXML4JVersionString()+" of XML4J. \n"+
  -                                "This version of XSLT4J is only tested with version "+
  -                                XML4J_VERSION+" of XML4J! \n");
  -        }
  -        else
  -        {
  -          System.out.println("Found version "+getXML4JVersionString()+" of XML4J. \n"+
  -                                 "This version of XSLT4J doesn't work with versions less than "+
  -                                 XML4J_VERSION+" of XML4J! \n");
  -        }
  -      }
  -      m_didVersionCheck = true;
  -    }
  -  }
  -
  -  /**
  -    * Parse an XML document.
  -    *
  -    * <p>The application can use this method to instruct the SAX parser
  -    * to begin parsing an XML document from any valid input
  -    * source (a character stream, a byte stream, or a URI).</p>
  -    *
  -    * <p>Applications may not invoke this method while a parse is in
  -    * progress (they should create a new Parser instead for each
  -    * additional XML document).  Once a parse is complete, an
  -    * application may reuse the same Parser object, possibly with a
  -    * different input source.</p>
  -    *
  -    * @param source The input source for the top-level of the
  -    *        XML document.
  -    * @exception org.xml.sax.SAXException Any SAX exception, possibly
  -    *            wrapping another exception.
  -    * @exception java.io.IOException An IO exception from the parser,
  -    *            possibly from a byte stream or character stream
  -    *            supplied by the application.
  -    * @see org.xml.sax.InputSource
  -    * @see #parse(java.lang.String)
  -    * @see #setEntityResolver
  -    * @see #setDTDHandler
  -    * @see #setDocumentHandler
  -    * @see #setErrorHandler
  -    */
     public void parse (InputSource source)
       throws SAXException, IOException
     {
  @@ -338,6 +298,7 @@
   
     /**
      * Tell if the node is ignorable whitespace.
  +   * @deprecated
      */
     public boolean isIgnorableWhitespace(Text node)
     {
  @@ -353,40 +314,44 @@
       return isIgnorable;
     }
   
  - 
  +  
  +  /**
  +   * Get the namespace of the node.  Calls org.apache.xerces.dom.NodeImpl's
  +   * getNamespaceURI().
  +   */
     public String getNamespaceOfNode(Node n)
     {
       return ((org.apache.xerces.dom.NodeImpl)n).getNamespaceURI();
     }
  - 
  +  
   
     /**
  -   * Returns the local name of the given node.
  -   */
  +  * Returns the local name of the given node.
  +  */
     // public String getLocalNameOfNode(Node n)
     // {
     //   return ((org.apache.xerces.dom.NodeImpl)n).getLocalName();
     // }
   
     /**
  -   * Returns the element name with the namespace expanded.
  -   */
  -   // public String getExpandedElementName(Element elem)
  -   // {
  -    //  String namespace = getNamespaceOfNode(elem);
  -   //   return (null != namespace) ? namespace+":"+ getLocalNameOfNode(elem)
  -   //                                : getLocalNameOfNode(elem);
  -   // }
  -
  -  /**
  -   * Returns the attribute name with the namespace expanded.
  -   */
  -   // public String getExpandedAttributeName(Attr attr)
  -   // {
  -    //  String namespace = getNamespaceOfNode(attr);
  -   //   return (null != namespace) ? namespace+":"+ getLocalNameOfNode(attr)
  -    //                               : getLocalNameOfNode(attr);
  -   // }
  +  * Returns the element name with the namespace expanded.
  +  */
  +  // public String getExpandedElementName(Element elem)
  +  // {
  +  //  String namespace = getNamespaceOfNode(elem);
  +  //   return (null != namespace) ? namespace+":"+ getLocalNameOfNode(elem)
  +  //                                : getLocalNameOfNode(elem);
  +  // }
  +
  +  /**
  +  * Returns the attribute name with the namespace expanded.
  +  */
  +  // public String getExpandedAttributeName(Attr attr)
  +  // {
  +  //  String namespace = getNamespaceOfNode(attr);
  +  //   return (null != namespace) ? namespace+":"+ getLocalNameOfNode(attr)
  +  //                               : getLocalNameOfNode(attr);
  +  // }
   
     /**
      * Get the parent of a node.
  @@ -398,13 +363,17 @@
              ? ((AttrImpl)node).getElement() : node.getParentNode();
     }
   
  +  /**
  +   * Override schema validation until they stop trying to resolve a namespace 
  +   * to the schema.
  +   */
     class NullSchemaValidator extends org.apache.xerces.validators.schema.XSchemaValidator
     {
       public NullSchemaValidator(org.apache.xerces.utils.StringPool stringPool,
                                  org.apache.xerces.framework.XMLErrorReporter errorReporter,
                                  org.apache.xerces.readers.XMLEntityHandler entityHandler)
       {
  -        super(stringPool, errorReporter, entityHandler);
  +      super(stringPool, errorReporter, entityHandler);
       }
   
       public final void loadSchema(String uri) {}
  @@ -429,24 +398,6 @@
       }
     }
   
  -  /**
  -   * Command line interfact to transform the XML according to
  -   * the instructions found in the XSL document.
  -   */
  -  /*
  -  public static void main( String argv[] )
  -  {
  -    String[] argv2 = new String[argv.length+2];
  -    argv2[0] = "-PARSER";
  -    argv2[1] = "org.apache.xalan.xslt.xml4j2dom.XercesLiaison";
  -    int n = argv2.length;
  -    for(int i = 2; i < n; i++)
  -    {
  -      argv2[i] = argv[i-2];
  -    }
  -    org.apache.xalan.xslt.Process.main(argv2);
  -  }
  -  */
   }
   
   
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/AttList.java
  
  Index: AttList.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/AttList.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- AttList.java	1999/11/08 20:55:52	1.1
  +++ AttList.java	2000/03/02 10:22:47	1.2
  @@ -61,6 +61,7 @@
   
   
   /**
  + * <meta name="usage" content="internal"/>
    * Wraps a DOM attribute list in a SAX AttributeList.
    */
   public class AttList implements AttributeList
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/BoolStack.java
  
  Index: BoolStack.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/BoolStack.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- BoolStack.java	2000/01/21 20:47:31	1.2
  +++ BoolStack.java	2000/03/02 10:22:47	1.3
  @@ -59,6 +59,7 @@
   import java.util.EmptyStackException;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Simple stack for boolean values.
    */
   public final class BoolStack
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/DefaultErrorHandler.java
  
  Index: DefaultErrorHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/DefaultErrorHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DefaultErrorHandler.java	1999/11/08 20:55:51	1.1
  +++ DefaultErrorHandler.java	2000/03/02 10:22:47	1.2
  @@ -59,6 +59,7 @@
   import org.xml.sax.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * Implement SAX error handler for default reporting.
    */
   public class DefaultErrorHandler implements ErrorHandler 
  
  
  
  1.3       +5 -0      xml-xalan/src/org/apache/xalan/xpath/xml/ElemDesc.java
  
  Index: ElemDesc.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/ElemDesc.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ElemDesc.java	1999/12/15 21:53:07	1.2
  +++ ElemDesc.java	2000/03/02 10:22:47	1.3
  @@ -58,6 +58,11 @@
   
   import java.util.Hashtable;
   
  +/**
  + * <meta name="usage" content="internal"/>
  + * This class is in support of FormatterToHTML, and acts as a sort 
  + * of element representative for HTML elements.
  + */
   class ElemDesc
   {
     int m_flags;
  
  
  
  1.7       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToDOM.java
  
  Index: FormatterToDOM.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToDOM.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FormatterToDOM.java	2000/02/23 17:09:44	1.6
  +++ FormatterToDOM.java	2000/03/02 10:22:47	1.7
  @@ -61,6 +61,7 @@
   import org.xml.sax.ext.LexicalHandler;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class takes SAX events (in addition to some extra events 
    * that SAX doesn't handle yet) and adds the result to a document 
    * or document fragment.
  
  
  
  1.28      +2 -0      xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToHTML.java
  
  Index: FormatterToHTML.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToHTML.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- FormatterToHTML.java	2000/02/29 20:03:07	1.27
  +++ FormatterToHTML.java	2000/03/02 10:22:47	1.28
  @@ -64,7 +64,9 @@
   import org.xml.sax.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * FormatterToHTML formats SAX-style events into XML.
  + * Warning: this class will be replaced by the Xerces Serializer classes.
    */
   public class FormatterToHTML extends FormatterToXML 
   {  
  
  
  
  1.3       +2 -0      xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToText.java
  
  Index: FormatterToText.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToText.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- FormatterToText.java	1999/11/27 08:53:24	1.2
  +++ FormatterToText.java	2000/03/02 10:22:47	1.3
  @@ -60,8 +60,10 @@
   import java.io.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class takes SAX events (in addition to some extra events 
    * that SAX doesn't handle yet) and produces simple text only.
  + * Warning: this class will be replaced by the Xerces Serializer classes.
    */
   public class FormatterToText implements DocumentHandler
   {
  
  
  
  1.29      +2 -0      xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToXML.java
  
  Index: FormatterToXML.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/FormatterToXML.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- FormatterToXML.java	2000/02/28 22:03:37	1.28
  +++ FormatterToXML.java	2000/03/02 10:22:48	1.29
  @@ -71,7 +71,9 @@
   import org.apache.xml.serialize.OutputFormat;
   
   /**
  + * <meta name="usage" content="general"/>
    * FormatterToXML formats SAX-style events into XML.
  + * Warning: this class will be replaced by the Xerces Serializer classes.
    */
   public class FormatterToXML implements DocumentHandler, LexicalHandler, RawCharacterHandler
   {
  
  
  
  1.3       +5 -1      xml-xalan/src/org/apache/xalan/xpath/xml/IntStack.java
  
  Index: IntStack.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/IntStack.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- IntStack.java	2000/02/13 16:42:43	1.2
  +++ IntStack.java	2000/03/02 10:22:48	1.3
  @@ -58,9 +58,13 @@
   
   import java.util.EmptyStackException;
   
  +/**
  + * <meta name="usage" content="internal"/>
  + * Implement an array of simple integers.
  + */
   public class IntStack extends IntVector
   {
  -    /**
  +  /**
      * Default constructor.  Note that the default 
      * block size is very small, for small lists.
      */
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/IntVector.java
  
  Index: IntVector.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/IntVector.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IntVector.java	2000/02/21 08:14:26	1.3
  +++ IntVector.java	2000/03/02 10:22:48	1.4
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath.xml;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A very simple table that stores a list of int.
    */
   public class IntVector
  
  
  
  1.5       +4 -0      xml-xalan/src/org/apache/xalan/xpath/xml/MutableAttrListImpl.java
  
  Index: MutableAttrListImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/MutableAttrListImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MutableAttrListImpl.java	2000/02/21 08:14:26	1.4
  +++ MutableAttrListImpl.java	2000/03/02 10:22:48	1.5
  @@ -4,6 +4,10 @@
   import org.xml.sax.AttributeList;
   import java.io.Serializable;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement the SAX AttributeList interface, using a single array.
  + */
   public class MutableAttrListImpl extends StringVector implements AttributeList, Serializable
   {
  static final int OFFSET_NAME = 0;
  static final int OFFSET_TYPE = 1;
  static final int OFFSET_VALUE = 2;
  static final int SLOTS_PER_ATTR = 3;
  
     /**
  
  
  
  1.2       +3 -1      xml-xalan/src/org/apache/xalan/xpath/xml/NSInfo.java
  
  Index: NSInfo.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/NSInfo.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- NSInfo.java	1999/11/08 20:55:55	1.1
  +++ NSInfo.java	2000/03/02 10:22:48	1.2
  @@ -57,8 +57,10 @@
   package org.apache.xalan.xpath.xml;
   
   /**
  + * <meta name="usage" content="internal"/>
    * This class holds information about the namespace info
  - * of a node.
  + * of a node.  It is used to optimize namespace lookup in 
  + * a generic DOM.
    */
   class NSInfo
   {
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/NameSpace.java
  
  Index: NameSpace.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/NameSpace.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NameSpace.java	2000/01/20 14:40:06	1.2
  +++ NameSpace.java	2000/03/02 10:22:48	1.3
  @@ -59,6 +59,7 @@
   import java.io.Serializable;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * A representation of a namespace.  One of these will 
    * be pushed on the namespace stack for each
    * element.
  
  
  
  1.8       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/NodeVector.java
  
  Index: NodeVector.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/NodeVector.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- NodeVector.java	2000/03/01 01:56:52	1.7
  +++ NodeVector.java	2000/03/02 10:22:49	1.8
  @@ -60,6 +60,7 @@
   import org.w3c.dom.Node;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A very simple table that stores a list of Nodes.
    */
   public class NodeVector implements Serializable
  
  
  
  1.3       +7 -1      xml-xalan/src/org/apache/xalan/xpath/xml/PrefixResolver.java
  
  Index: PrefixResolver.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/PrefixResolver.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PrefixResolver.java	2000/02/11 23:07:50	1.2
  +++ PrefixResolver.java	2000/03/02 10:22:49	1.3
  @@ -56,6 +56,11 @@
    */
   package org.apache.xalan.xpath.xml;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * This class that implements this interface can resolve prefixes 
  + * to namespaces.
  + */
   public interface PrefixResolver
   {
     /**
  @@ -70,7 +75,8 @@
      */
     String getNamespaceForPrefix(String prefix, org.w3c.dom.Node context);
     
  -  /** Return the base identifier.
  +  /** 
  +   * Return the base identifier.
      */
     public String getBaseIdentifier();
   }
  
  
  
  1.3       +3 -1      xml-xalan/src/org/apache/xalan/xpath/xml/PrefixResolverDefault.java
  
  Index: PrefixResolverDefault.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/PrefixResolverDefault.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- PrefixResolverDefault.java	2000/02/11 23:07:50	1.2
  +++ PrefixResolverDefault.java	2000/03/02 10:22:49	1.3
  @@ -4,6 +4,7 @@
   import org.w3c.dom.NamedNodeMap;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class implements a generic PrefixResolver that 
    * can be used to perform prefix-to-namespace lookup 
    * for the XPath object.
  @@ -102,7 +103,8 @@
       return namespace;
     }
     
  -  /** Return the base identifier.
  +  /** 
  +   * Return the base identifier.
      */
     public String getBaseIdentifier()
     {
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/ProblemListener.java
  
  Index: ProblemListener.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/ProblemListener.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ProblemListener.java	1999/11/10 21:51:30	1.2
  +++ ProblemListener.java	2000/03/02 10:22:49	1.3
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * This is the interface that the XSL processor calls when it 
    * has a problem of some kind, either an error or a warning.
    * Users should ass the XSLTEngineImpl class to setProblemListener
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/ProblemListenerDefault.java
  
  Index: ProblemListenerDefault.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/ProblemListenerDefault.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ProblemListenerDefault.java	2000/01/24 23:09:20	1.4
  +++ ProblemListenerDefault.java	2000/03/02 10:22:49	1.5
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * The implementation of the default error handling for 
    * XSLT4J.
    */
  
  
  
  1.3       +23 -1     xml-xalan/src/org/apache/xalan/xpath/xml/QName.java
  
  Index: QName.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/QName.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- QName.java	2000/02/21 08:14:26	1.2
  +++ QName.java	2000/03/02 10:22:49	1.3
  @@ -61,6 +61,7 @@
   import org.w3c.dom.Element;
   
   /**
  + * <meta name="usage" content="general"/>
    * Class to represent a qualified name: "The name of an internal XSLT object, 
    * specifically a named template (see [7 Named Templates]), a mode (see [6.7 Modes]), 
    * an attribute set (see [8.1.4 Named Attribute Sets]), a key (see [14.2 Keys]), 
  @@ -74,11 +75,29 @@
    */
   public class QName implements java.io.Serializable
   {
  +  /**
  +   * The XML namespace.
  +   */
     public static final String S_XMLNAMESPACEURI = "http://www.w3.org/XML/1998/namespace";
  +  
  +  /**
  +   * The namespace, which may be null.
  +   */
     public String m_namespace;
  +  
  +  /**
  +   * The local name.
  +   */
     public String m_localpart;
  +  
  +  /**
  +   * The cached hashcode, which is calculated at construction time.
  +   */
     int m_hashCode;
     
  +  /**
  +   * Return the cached hashcode of the qualified name.
  +   */
     public int hashCode()
     {
       return m_hashCode;
  @@ -283,7 +302,10 @@
       }
     }
   
  -  
  +  /**
  +   * Return the string representation of the namespace. Performs 
  +   * string concatenation, so beware of performance issues.
  +   */
     public String toString()
     {
       return (null != this.m_namespace) 
  
  
  
  1.2       +8 -0      xml-xalan/src/org/apache/xalan/xpath/xml/RawCharacterHandler.java
  
  Index: RawCharacterHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/RawCharacterHandler.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RawCharacterHandler.java	1999/12/03 08:43:13	1.1
  +++ RawCharacterHandler.java	2000/03/02 10:22:49	1.2
  @@ -56,8 +56,16 @@
    */
   package org.apache.xalan.xpath.xml;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * An interface that a Serializer/ContentHandler/DocumentHandler must 
  + * implement in order for disable-output-escaping to work.
  + */
   public interface RawCharacterHandler
   {
  +  /**
  +   * Serialize the characters without escaping.
  +   */
     public void charactersRaw (char ch[], int start, int length)
       throws org.xml.sax.SAXException;
   }
  
  
  
  1.2       +2 -1      xml-xalan/src/org/apache/xalan/xpath/xml/StringKey.java
  
  Index: StringKey.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/StringKey.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- StringKey.java	1999/12/02 06:08:51	1.1
  +++ StringKey.java	2000/03/02 10:22:50	1.2
  @@ -57,8 +57,9 @@
   package org.apache.xalan.xpath.xml;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Simple class for fast lookup of string values, when used with 
  - * hashtables.
  + * hashtables.  This class caches the hash value of the string.
    */
   public class StringKey extends Object
   {
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/StringToStringTable.java
  
  Index: StringToStringTable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/StringToStringTable.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StringToStringTable.java	2000/02/21 08:14:26	1.3
  +++ StringToStringTable.java	2000/03/02 10:22:50	1.4
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath.xml;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A very simple lookup table that stores a list of strings, the even 
    * number strings being keys, and the odd number strings being values.
    */
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/StringToStringTableVector.java
  
  Index: StringToStringTableVector.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/StringToStringTableVector.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- StringToStringTableVector.java	1999/12/13 07:40:11	1.1
  +++ StringToStringTableVector.java	2000/03/02 10:22:50	1.2
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath.xml;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A very simple table that stores a list of StringToStringTables, optimized 
    * for small lists.
    */
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xpath/xml/StringVector.java
  
  Index: StringVector.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/StringVector.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- StringVector.java	2000/02/17 13:06:25	1.4
  +++ StringVector.java	2000/03/02 10:22:50	1.5
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xpath.xml;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A very simple table that stores a list of strings, optimized 
    * for small lists.
    */
  
  
  
  1.7       +1 -1      xml-xalan/src/org/apache/xalan/xpath/xml/TreeWalker.java
  
  Index: TreeWalker.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/TreeWalker.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TreeWalker.java	2000/02/23 17:09:44	1.6
  +++ TreeWalker.java	2000/03/02 10:22:50	1.7
  @@ -59,9 +59,9 @@
   import org.w3c.dom.*;
   import org.xml.sax.*;
   import org.xml.sax.ext.LexicalHandler;
  -// import org.apache.xalan.xpath.dtm.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * This class does a pre-order walk of the DOM tree, calling the FormatterListener
    * interface as it goes.
    */
  
  
  
  1.2       +7 -7      xml-xalan/src/org/apache/xalan/xpath/xml/Trie.java
  
  Index: Trie.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/Trie.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- Trie.java	2000/02/18 21:37:17	1.1
  +++ Trie.java	2000/03/02 10:22:50	1.2
  @@ -57,13 +57,13 @@
   
   package org.apache.xalan.xpath.xml;
   
  -/** A digital search trie for 7-bit ASCII text
  -
  -	The API is a subset of java.util.Hashtable
  -	The key must be a 7-bit ASCII string
  -	The value may be any Java Object
  -*/
  -
  +/** 
  + * <meta name="usage" content="internal"/>
  + * A digital search trie for 7-bit ASCII text
  + * The API is a subset of java.util.Hashtable
  + * The key must be a 7-bit ASCII string
  + * The value may be any Java Object
  + */
   public class Trie
   {
   	public static final int ALPHA_SIZE = 128;
  
  
  
  1.2       +9 -0      xml-xalan/src/org/apache/xalan/xpath/xml/WrongParserException.java
  
  Index: WrongParserException.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/WrongParserException.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- WrongParserException.java	1999/11/08 20:55:52	1.1
  +++ WrongParserException.java	2000/03/02 10:22:50	1.2
  @@ -56,8 +56,17 @@
    */
   package org.apache.xalan.xpath.xml;
   
  +/**
  + * <meta name="usage" content="general"/>
  + * Certain functions may throw this error if they are paired with 
  + * the incorrect parser.
  + */
   public class WrongParserException extends RuntimeException
   {
  +  /**
  +   * Create a WrongParserException object.
  +   * @param message The error message that should be reported to the user.
  +   */
     public WrongParserException(String message) 
     {
        super(message);
  
  
  
  1.5       +38 -23    xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaison.java
  
  Index: XMLParserLiaison.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaison.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XMLParserLiaison.java	2000/02/23 15:16:16	1.4
  +++ XMLParserLiaison.java	2000/03/02 10:22:50	1.5
  @@ -67,109 +67,118 @@
   
   
   /**
  + * <meta name="usage" content="general"/>
    * An implementation of this interface acts as a liaison 
  - * between the XSL processor and the XML parser. It is 
  + * between the XSLT processor and the XML parser. It is 
    * needed in order to support features like included files, 
    * and to cover for deficiencies in the DOM. An implementation 
    * of this interface is a requirement for the XSL processor.
  + * 
  + * While the XPathSupport methods are intended to just support 
  + * XPath, the methods in this class are intended to support 
  + * XSLT.
    */
   public interface XMLParserLiaison extends XPathSupport, Parser
   {
     /**
  + * <meta name="usage" content="internal"/>
      * Check node to see if it matches this liaison.
      */
  -  public void checkNode(Node node)
  +  void checkNode(Node node)
       throws SAXException;
     
     /**
      * Reset for new run.
      */
  -  public void reset();
  +  void reset();
     
     /**
  + * <meta name="usage" content="advanced"/>
      * XPath environment support, which the liaison may aggregate back to 
      * in order to implement the XPathEnvSupport interface.
      */
  -  public void setEnvSupport(XPathEnvSupport envSupport);
  +  void setEnvSupport(XPathEnvSupport envSupport);
     
     /**
      * Returns true if the liaison supports the SAX DocumentHandler 
      * interface.
      */
  -  public boolean supportsSAX();
  +  boolean supportsSAX();
     
     /** 
  -   * Returns the document just parsed. 
  +   * Returns the document just parsed.
      */
  -  public Document getDocument();
  +  Document getDocument();
   
     /**
      * Create an empty DOM Document.  Mainly used for creating an 
      * output document.
      */
  -  public Document createDocument();
  +  Document createDocument();
     
     /**
      * Return the expanded element name.
      */
  -  public String getExpandedElementName(Element elem);
  +  String getExpandedElementName(Element elem);
   
     /**
      * Returns the attribute name with the namespace expanded.
      */
  -  public String getExpandedAttributeName(Attr attr);
  +  String getExpandedAttributeName(Attr attr);
   
     /**
      * Set special characters for attributes that will be escaped.
  +   * @deprecated
      */
  -  public void setSpecialCharacters(String str);
  +  void setSpecialCharacters(String str);
   
     /**
      * Get special characters for attributes that will be escaped.
  +   * @deprecated
      */
  -  public String getSpecialCharacters();
  +  String getSpecialCharacters();
     
     /**
      * Get the amount to indent when indent-result="yes".
      */
  -  public int getIndent();
  +  int getIndent();
     
     /**
      * Set the amount to indent when indent-result="yes".
      */
  -  public void setIndent(int i);
  +  void setIndent(int i);
   
     /**
      * Get whether or not to expand all entity references in the 
      * source and style trees.
      */
  -  public boolean getShouldExpandEntityRefs();
  +  boolean getShouldExpandEntityRefs();
     
     /**
      * Set whether or not to expand all entity references in the 
      * source and style trees.
      */
  -  public void setShouldExpandEntityRefs(boolean b);
  +  void setShouldExpandEntityRefs(boolean b);
   
     /**
      * Get whether or not validation will be performed.  Validation is off by default.
      */
  -  public boolean getUseValidation();
  +  boolean getUseValidation();
     
     /**
      * If set to true, validation will be performed.  Validation is off by default.
      */
  -  public void setUseValidation(boolean b);
  +  void setUseValidation(boolean b);
     
     /**
      * Return a string suitible for telling the user what parser is being used.
      */
  -  public String getParserDescription();
  +  String getParserDescription();
     
     /**
      * Get a factory to create XPaths.
      */
  -  public XPathFactory getDefaultXPathFactory();
  +  XPathFactory getDefaultXPathFactory();
   
     /**
      * Take a user string and try and parse XML, and also return 
  @@ -177,7 +186,7 @@
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide 
      * the error condition is severe enough to halt processing.
      */
  -  public URL getURLFromString(String urlString, String base)
  +  URL getURLFromString(String urlString, String base)
       throws SAXException;
     
     /**
  @@ -193,12 +202,18 @@
     /**
      * Set the current problem listener.
      */
  -  public void setProblemListener(ProblemListener listener);
  +  void setProblemListener(ProblemListener listener);
     
     /**
      * Get the current problem listener.
      */
  -  public ProblemListener getProblemListener();
  +  ProblemListener getProblemListener();
  +  
  +  /**
  +   * Copy attributes from another liaison.
  +   */
  +  public void copyFromOtherLiaison(XMLParserLiaisonDefault from)
  +    throws SAXException;
   
   }
   
  
  
  
  1.29      +39 -69    xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaisonDefault.java
  
  Index: XMLParserLiaisonDefault.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/XMLParserLiaisonDefault.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- XMLParserLiaisonDefault.java	2000/03/01 02:32:43	1.28
  +++ XMLParserLiaisonDefault.java	2000/03/02 10:22:50	1.29
  @@ -69,6 +69,7 @@
   //import org.apache.xml.serialize.Serializer;
   
   /**
  + * <meta name="usage" content="general"/>
    * This class is the default XMLParserLiaison for the XSL Processor.
    * It can be used alone, for programmatically built DOMs (I expect 
    * this use will be very rare), or it can be derived from, in order 
  @@ -134,7 +135,7 @@
      * this is with multiple reuse of the liaison with multiple documents, 
      * especially after disk serialization.
      */
  -  public Vector m_dataProviders = new Vector(1);
  +  protected Vector m_dataProviders = new Vector(1);
     
     /**
      * The amount to indent when indent-result="yes".
  @@ -150,23 +151,18 @@
     /**
      * If set to true, validation will be performed.  Validation is off by default.
      */
  -  public boolean m_use_validation = false;
  +  protected boolean m_use_validation = false;
   
     
     /**
      * These are characters that will be escaped in the output.
      */
  -  public String m_attrSpecialChars = "<>&\"\'\r\n";
  +  protected String m_attrSpecialChars = "<>&\"\'\r\n";
     
     /**
  -   * The URI for the XML namespace.
  -   */
  -  public static final String S_XMLNAMESPACEURI = "http://www.w3.org/XML/1998/namespace";
  -  
  -  /**
      * The associated formatter listener.
      */
  -  public DocumentHandler m_formatterListener = null;
  +  protected DocumentHandler m_formatterListener = null;
       
     /**
      * XPath environment support, which we aggregate back to 
  @@ -175,6 +171,7 @@
     protected XPathEnvSupport m_envSupport = null;
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Table of extensions that may be called from the expression language 
      * via the call(name, ...) function.  Objects are keyed on the call 
      * name.
  @@ -249,6 +246,7 @@
     private Object m_callbackInfo = null;    
   
     /**
  +   * <meta name="state" content="experimental"/>
      * Set a callback that may be called by XPath as nodes are located.
      * The callback will only be called if the XLocator determines that 
      * the location path can process the nodes in document order.
  @@ -266,6 +264,7 @@
     }
     
     /**
  +   * <meta name="state" content="experimental"/>
      * Get the callback that may be called by XPath as nodes are located.
      * @return the current callback method.
      */
  @@ -287,7 +286,6 @@
     //==========================================================
     // SECTION: Parsing Support
     //==========================================================
  -  private final void ____Parsing_Support____(){}
   
     /** 
      * Returns the document just parsed. 
  @@ -452,6 +450,8 @@
       * additional XML document).  Once a parse is complete, an
       * application may reuse the same Parser object, possibly with a
       * different input source.</p>
  +    * 
  +    * <p>This method needs to be overridden by a derived class.</p>
       *
       * @param source The input source for the top-level of the
       *        XML document.
  @@ -544,7 +544,8 @@
   
     /**
      * Set whether or not the liaison attempts to expand namespaces.  Used 
  -   * for optimization.
  +   * for optimization.  No longer supported.
  +   * @deprecated
      */
     public void setProcessNamespaces(boolean processNamespaces)
     {
  @@ -553,6 +554,7 @@
     
     /**
      * Tells if namespaces should be supported.  For optimization purposes.
  +   * @deprecated
      */
     public boolean getProcessNamespaces()
     {
  @@ -560,6 +562,7 @@
     }
     
    /**
  +   * <meta name="usage" content="advanced"/>
      * Tells, through the combination of the default-space attribute 
      * on xsl:stylesheet, xsl:strip-space, xsl:preserve-space, and the
      * xml:space attribute, whether or not extra whitespace should be stripped 
  @@ -572,35 +575,8 @@
       throws org.xml.sax.SAXException
     {
       return (null == m_envSupport) ? false : m_envSupport.shouldStripSourceNode(textNode);
  -  }
  -  
  -  private void readObject(ObjectInputStream stream)
  -    throws IOException
  -  {
  -    // System.out.println("Reading XMLParserLiaisonDefault");
  -    try
  -    {
  -      stream.defaultReadObject();
  -      m_NSInfos = new Hashtable();
  -      m_extensionFunctionNamespaces = new Hashtable();
  -      // m_extensionNamespaces = new Hashtable();
  -      m_sourceDocs = new Hashtable();
  -    }
  -    catch(ClassNotFoundException cnfe)
  -    {
  -      throw new RuntimeException("In XMLParserLiaisonDefault.readObject: "+cnfe.getMessage());
  -    }
  -    // System.out.println("Done reading XMLParserLiaisonDefault");
  -  }
  -
  -  private void writeObject(ObjectOutputStream stream)
  -    throws IOException
  -  {
  -    // System.out.println("Writing XMLParserLiaisonDefault");
  -    stream.defaultWriteObject();
  -    // System.out.println("Done writing XMLParserLiaisonDefault");
     }
  -  
  +    
     /**
      * Return a string suitible for telling the user what parser is being used.
      */
  @@ -678,6 +654,7 @@
     
     /**
      * Set special characters for attributes that will be escaped.
  +   * @deprecated
      */
     public void setSpecialCharacters(String str)
     {
  @@ -686,6 +663,7 @@
     
     /**
      * Get special characters for attributes that will be escaped.
  +   * @deprecated
      */
     public String getSpecialCharacters()
     {
  @@ -693,6 +671,7 @@
     }
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * XPath environment support, which the liaison may aggregate back to 
      * in order to implement the XPathEnvSupport interface.
      */
  @@ -1002,7 +981,6 @@
     //==========================================================
     // SECTION: Namespace resolution
     //==========================================================
  -  private final void ____Namespaces____(){}
     
     /**
      * Given a prefix and a namespace context, return the expanded namespace.
  @@ -1015,7 +993,7 @@
       String namespace = null;
       if(prefix.equals("xml"))
       {
  -      namespace = S_XMLNAMESPACEURI;
  +      namespace = QName.S_XMLNAMESPACEURI;
       }
       else
       {
  @@ -1115,7 +1093,7 @@
         boolean nHasXMLNS = false;
         if(prefix.equals("xml"))
         {
  -        namespaceOfPrefix = S_XMLNAMESPACEURI;
  +        namespaceOfPrefix = QName.S_XMLNAMESPACEURI;
         }
         else
         {
  @@ -1262,10 +1240,10 @@
     //==========================================================
     // SECTION: DOM Helper Functions
     //==========================================================
  -  private final void ____DOM_Helpers____(){}
   
     /** 
      * Tell if the node is ignorable whitespace.
  +   * @deprecated
      */
     public boolean isIgnorableWhitespace(Text node)
     {
  @@ -1502,33 +1480,11 @@
         // ignore
         break;
       }
  -  }
  -  
  -  //==========================================================
  -  // SECTION: Formatter Interface Methods
  -  //==========================================================
  -  private final void ____Formatter_Interface_Methods____(){}
  -
  -  /**
  -   * Set an instance of the formatter listener that is associated 
  -   * with this formatter.
  -   */
  -  public void setFormatterListener(DocumentHandler fl)
  -  {
  -    m_formatterListener = fl;
  -  }
  -  
  -  /**
  -   * Get an instance of the formatter listener that is associated 
  -   * with this formatter.  For now this just returns null.
  -   */
  -  public DocumentHandler getFormatterListener()
  -  {
  -    return m_formatterListener;
     }
  -  
  +    
     /**
      * Print a DOM tree.
  +   * @deprecated
      */
     public void toMarkup(Document doc, Writer writer, 
                          String method,
  @@ -1562,6 +1518,7 @@
      
     /**
      * Print a DOM tree.
  +   * @deprecated
      */
     public void toMarkup(Document doc, OutputStream ostream, 
                          String method,
  @@ -1597,7 +1554,6 @@
     //==========================================================
     // SECTION: Diagnostics
     //==========================================================
  -  private final void ____Diagnostics____(){}
   
     /**
      * Function that is called when a problem event occurs.
  @@ -1732,8 +1688,11 @@
     //==========================================================
     // SECTION: Execution context state tracking
     //==========================================================
  -  private final void ____Execution_Context____(){}
       
  +  
  +  /**
  +   * Given a valid element key, return the corresponding node list.
  +   */
     public NodeList getNodeSetByKey(Node doc, String name, 
                              String ref, 
                              org.apache.xalan.xpath.xml.PrefixResolver nscontext)
  @@ -1749,6 +1708,10 @@
       }
     }
     
  +  /**
  +   * Given a name, locate a variable in the current context, and return
  +   * the Object.
  +   */
     public XObject getVariable(QName name)
       throws org.xml.sax.SAXException
     {
  @@ -1764,6 +1727,7 @@
     }
         
     /**
  +   * <meta name="usage" content="advanced"/>
      * Register an extension namespace handler. This handler provides
      * functions for testing whether a function is known within the 
      * namespace and also for invoking the functions.
  @@ -1777,6 +1741,7 @@
     }
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * Register an element extension namespace handler. This handler provides
      * functions for testing whether a function is known within the 
      * namespace and also for invoking the functions.
  @@ -1965,6 +1930,7 @@
     }
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * Associate an XLocator provider to a node.  This makes
      * the association based on the root of the tree that the 
      * node is parented by.
  @@ -1990,6 +1956,7 @@
     }
     
     /**
  +   * <meta name="usage" content="advanced"/>
      * getXLocatorHandler.
      */
     public XLocator createXLocatorHandler()
  @@ -1998,6 +1965,7 @@
     }
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * Get an XLocator provider keyed by node.  This get's
      * the association based on the root of the tree that the 
      * node is parented by.
  @@ -2027,6 +1995,7 @@
     
     
     /**
  +   * <meta name="usage" content="internal"/>
      * ThrowFoundIndex tells if FoundIndex should be thrown 
      * if index is found.
      * This is an optimization for match patterns, and 
  @@ -2038,6 +2007,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * ThrowFoundIndex tells if FoundIndex should be thrown 
      * if index is found.
      * This is an optimization for match patterns, and 
  
  
  
  1.7       +286 -267  xml-xalan/src/org/apache/xalan/xpath/xml/XSLMessages.java
  
  Index: XSLMessages.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/XSLMessages.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XSLMessages.java	2000/01/05 23:05:29	1.6
  +++ XSLMessages.java	2000/03/02 10:22:50	1.7
  @@ -65,279 +65,298 @@
   
   
   /**
  - * Sets things up for issuing error messages.
  + * <meta name="usage" content="internal"/>
  + * Sets things up for issuing error messages.  This class is misnamed, and 
  + * should be called XalanMessages, or some such.
    */
  -public class XSLMessages {
  -	
  -	private Locale fLocale = Locale.getDefault();
  +public class XSLMessages 
  +{
  +  
  +  private Locale fLocale = Locale.getDefault();
     private static XSLResourceBundle XSLTBundle = null ;
     private static XSLResourceBundle XPATHBundle = null ;
     private static final String XSLT_ERROR_RESOURCES = "org.apache.xalan.xslt.res.XSLTErrorResources";
  -	private static final String XPATH_ERROR_RESOURCES = "org.apache.xalan.xpath.res.XPATHErrorResources";
  -	private static String BAD_CODE = "BAD_CODE";
  -	private static String FORMAT_FAILED = "FORMAT_FAILED";
  -	
  -    /**
  -     *
  -     */
  -    public void setLocale(Locale locale) {
  -        fLocale = locale;
  -    }
  -  
  -    /**
  -     *
  -     */
  -    public Locale getLocale() {
  -        return fLocale;
  -    }
  -    
  -    /**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public static final String createXPATHWarning(int errorCode, Object args[]) //throws Exception 
  -	  {
  -      if (XPATHBundle == null)        
  -		    XPATHBundle = (XSLResourceBundle)loadResourceBundle(XPATH_ERROR_RESOURCES );      
  -      XSLResourceBundle fResourceBundle = XPATHBundle;
  -      
  -      if (fResourceBundle != null)
  -      {
  -        String msgKey = fResourceBundle.getWarningKey(errorCode);
  -        return createXPATHMsg(fResourceBundle, msgKey, args);
  -      }
  -      else
  -        return "Could not load any resource bundles.";
  +  private static final String XPATH_ERROR_RESOURCES = "org.apache.xalan.xpath.res.XPATHErrorResources";
  +  private static String BAD_CODE = "BAD_CODE";
  +  private static String FORMAT_FAILED = "FORMAT_FAILED";
  +  
  +  /**
  +   *
  +   */
  +  public void setLocale(Locale locale) 
  +  {
  +    fLocale = locale;
  +  }
  +  
  +  /**
  +   *
  +   */
  +  public Locale getLocale() 
  +  {
  +    return fLocale;
  +  }
  +  
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public static final String createXPATHWarning(int errorCode, Object args[]) //throws Exception 
  +  {
  +    if (XPATHBundle == null)        
  +      XPATHBundle = (XSLResourceBundle)loadResourceBundle(XPATH_ERROR_RESOURCES );      
  +    XSLResourceBundle fResourceBundle = XPATHBundle;
  +    
  +    if (fResourceBundle != null)
  +    {
  +      String msgKey = fResourceBundle.getWarningKey(errorCode);
  +      return createXPATHMsg(fResourceBundle, msgKey, args);
  +    }
  +    else
  +      return "Could not load any resource bundles.";
  +  }
  +  
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public static final String createXPATHMessage(int errorCode, Object args[]) //throws Exception 
  +  {
  +    if (XPATHBundle == null)
  +      XPATHBundle = (XSLResourceBundle)loadResourceBundle(XPATH_ERROR_RESOURCES );
  +    XSLResourceBundle fResourceBundle = XPATHBundle;
  +    
  +    if (fResourceBundle != null)
  +    {
  +      String msgKey = fResourceBundle.getMessageKey(errorCode);
  +      return createXPATHMsg(fResourceBundle, msgKey, args);
       }
  +    else
  +      return "Could not load any resource bundles."; 
  +  }
  +  
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public static final String createXPATHMsg(XSLResourceBundle fResourceBundle, String msgKey, Object args[]) //throws Exception 
  +  {
  +    String fmsg= null;
  +    boolean throwex = false;		
       
  -    /**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public static final String createXPATHMessage(int errorCode, Object args[]) //throws Exception 
  -	  {
  -      if (XPATHBundle == null)
  -		    XPATHBundle = (XSLResourceBundle)loadResourceBundle(XPATH_ERROR_RESOURCES );
  -      XSLResourceBundle fResourceBundle = XPATHBundle;
  -      
  -      if (fResourceBundle != null)
  +    String msg = null;
  +    if (msgKey != null)
  +      msg = fResourceBundle.getString(msgKey);
  +    if (msg == null)
  +    {	
  +      msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
  +      throwex = true;
  +    }
  +    if (args != null) 
  +    {
  +      try 
         {
  -        String msgKey = fResourceBundle.getMessageKey(errorCode);
  -        return createXPATHMsg(fResourceBundle, msgKey, args);
  +        // Do this to keep format from crying.
  +        // This is better than making a bunch of conditional
  +        // code all over the place.
  +        int n = args.length;
  +        for(int i = 0; i < n; i++)
  +        {
  +          if(null == args[i])
  +            args[i]="";
  +        }
  +        fmsg = java.text.MessageFormat.format(msg, args);
         }
  -      else
  -        return "Could not load any resource bundles."; 
  -    }
  -	
  -	/**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public static final String createXPATHMsg(XSLResourceBundle fResourceBundle, String msgKey, Object args[]) //throws Exception 
  -	  {
  -      String fmsg= null;
  -		  boolean throwex = false;		
  -		
  -      String msg = null;
  -      if (msgKey != null)
  -        msg = fResourceBundle.getString(msgKey);
  -		  if (msg == null)
  -		  {	
  -			  msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
  -			  throwex = true;
  +      catch (Exception e) 
  +      {
  +        fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED);
  +        fmsg += " " + msg;
         }
  -          if (args != null) {
  -            try {
  -              // Do this to keep format from crying.
  -              // This is better than making a bunch of conditional
  -              // code all over the place.
  -              int n = args.length;
  -              for(int i = 0; i < n; i++)
  -              {
  -                if(null == args[i])
  -                  args[i]="";
  -              }
  -              fmsg = java.text.MessageFormat.format(msg, args);
  -            } catch (Exception e) {              
  -                fmsg = fResourceBundle.getString(XPATHErrorResources.FORMAT_FAILED);
  -                fmsg += " " + msg;
  -            }
  -        }
  -		else
  -			fmsg = msg;
  +    }
  +    else
  +      fmsg = msg;
   
  -    if (throwex) {
  -            throw new RuntimeException(fmsg);
  +    if (throwex) 
  +    {
  +      throw new RuntimeException(fmsg);
       }
  -        return fmsg;	
  -	} 
  +    return fmsg;	
  +  } 
  +  
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public static final String createWarning(int errorCode, Object args[]) //throws Exception 
  +  {
  +    if (XSLTBundle == null)
  +      XSLTBundle = (XSLResourceBundle)loadResourceBundle(XSLT_ERROR_RESOURCES );
       
  -    /**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public static final String createWarning(int errorCode, Object args[]) //throws Exception 
  -	  {
  -		  if (XSLTBundle == null)
  -		    XSLTBundle = (XSLResourceBundle)loadResourceBundle(XSLT_ERROR_RESOURCES );
  -      
  -      XSLResourceBundle fResourceBundle = XSLTBundle;
  -      
  -      if (fResourceBundle != null)
  -      { 
  -        String msgKey = fResourceBundle.getWarningKey(errorCode);
  -        return createMsg(fResourceBundle, msgKey, args);
  -      }
  -      else
  -        return "Could not load any resource bundles.";  
  -    }
  +    XSLResourceBundle fResourceBundle = XSLTBundle;
       
  -    /**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public static final String createMessage(int errorCode, Object args[]) //throws Exception 
  -	  {
  -		  if (XSLTBundle == null)
  -		    XSLTBundle = (XSLResourceBundle)loadResourceBundle(XSLT_ERROR_RESOURCES );
  -      
  -      XSLResourceBundle fResourceBundle = XSLTBundle;
  -      
  -      if (fResourceBundle != null)
  -      {  
  -        String msgKey = fResourceBundle.getMessageKey(errorCode);
  -        return createMsg(fResourceBundle, msgKey, args);
  -      }
  -      else
  -        return "Could not load any resource bundles.";
  -    }  
  -	
  -	/**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public static final String createMsg(XSLResourceBundle fResourceBundle, String msgKey, Object args[]) //throws Exception 
  -	  {
  -      String fmsg= null;
  -		  boolean throwex = false;
  -		
  -      String msg = null;
  -      if (msgKey != null)
  -        msg = fResourceBundle.getString(msgKey);
  -		  if (msg == null)
  -		  {	
  -			  msg = fResourceBundle.getString(BAD_CODE);
  -			  throwex = true;
  -      }
  -        if (args != null) {
  -            try {
  -              // Do this to keep format from crying.
  -              // This is better than making a bunch of conditional
  -              // code all over the place.
  -              int n = args.length;
  -              for(int i = 0; i < n; i++)
  -              {
  -                if(null == args[i])
  -                  args[i]="";
  -              }
  -              fmsg = java.text.MessageFormat.format(msg, args);
  -            } 
  -            catch (Exception e) {
  -                fmsg = fResourceBundle.getString(FORMAT_FAILED);
  -                fmsg += " " + msg;
  -            }
  +    if (fResourceBundle != null)
  +    { 
  +      String msgKey = fResourceBundle.getWarningKey(errorCode);
  +      return createMsg(fResourceBundle, msgKey, args);
  +    }
  +    else
  +      return "Could not load any resource bundles.";  
  +  }
  +  
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public static final String createMessage(int errorCode, Object args[]) //throws Exception 
  +  {
  +    if (XSLTBundle == null)
  +      XSLTBundle = (XSLResourceBundle)loadResourceBundle(XSLT_ERROR_RESOURCES );
  +    
  +    XSLResourceBundle fResourceBundle = XSLTBundle;
  +    
  +    if (fResourceBundle != null)
  +    {  
  +      String msgKey = fResourceBundle.getMessageKey(errorCode);
  +      return createMsg(fResourceBundle, msgKey, args);
  +    }
  +    else
  +      return "Could not load any resource bundles.";
  +  }  
  +  
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public static final String createMsg(XSLResourceBundle fResourceBundle, String msgKey, Object args[]) //throws Exception 
  +  {
  +    String fmsg= null;
  +    boolean throwex = false;
  +    
  +    String msg = null;
  +    if (msgKey != null)
  +      msg = fResourceBundle.getString(msgKey);
  +    if (msg == null)
  +    {	
  +      msg = fResourceBundle.getString(BAD_CODE);
  +      throwex = true;
  +    }
  +    if (args != null) 
  +    {
  +      try 
  +      {
  +        // Do this to keep format from crying.
  +        // This is better than making a bunch of conditional
  +        // code all over the place.
  +        int n = args.length;
  +        for(int i = 0; i < n; i++)
  +        {
  +          if(null == args[i])
  +            args[i]="";
           }
  -		else
  -			fmsg = msg;
  +        fmsg = java.text.MessageFormat.format(msg, args);
  +      } 
  +      catch (Exception e) 
  +      {
  +        fmsg = fResourceBundle.getString(FORMAT_FAILED);
  +        fmsg += " " + msg;
  +      }
  +    }
  +    else
  +      fmsg = msg;
   
  -    if (throwex) {
  -            throw new RuntimeException(fmsg);
  +    if (throwex) 
  +    {
  +      throw new RuntimeException(fmsg);
       }
  -        return fmsg;	
  -	}   
  +    return fmsg;	
  +  }   
   
  -    /**
  -     * Creates a message from the specified key and replacement
  -     * arguments, localized to the given locale.
  -     *
  -     * @param bundleName The name of the resource bundle to be
  -     *                  used.
  -     * @param errorCode The key for the message text.
  -     * @param args      The arguments to be used as replacement text
  -     *                  in the message created.
  -     */
  -    public String createMessage(String bundleName, int errorCode, Object args[]) throws Exception {
  -        boolean throwex = false;
  -		int majorCode; 
  -		int minorCode;
  -		String fmsg = null;
  -		XSLResourceBundle aResourceBundle = null;
  -     
  +  /**
  +   * Creates a message from the specified key and replacement
  +   * arguments, localized to the given locale.
  +   *
  +   * @param bundleName The name of the resource bundle to be
  +   *                  used.
  +   * @param errorCode The key for the message text.
  +   * @param args      The arguments to be used as replacement text
  +   *                  in the message created.
  +   */
  +  public String createMessage(String bundleName, int errorCode, Object args[]) throws Exception 
  +  {
  +    boolean throwex = false;
  +    int majorCode; 
  +    int minorCode;
  +    String fmsg = null;
  +    XSLResourceBundle aResourceBundle = null;
  +    
       aResourceBundle = (XSLResourceBundle)loadResourceBundle(bundleName );	      
  -		
  +    
       String msgKey = aResourceBundle.getMessageKey(errorCode);
       String msg = null;
       if (msgKey != null)
         msg = aResourceBundle.getString(msgKey);
  +    
  +    if (msg == null)
  +    {	
  +      msg = aResourceBundle.getString(BAD_CODE);
  +      throwex = true;
  +    }
       
  -		if (msg == null)
  -		{	
  -			msg = aResourceBundle.getString(BAD_CODE);
  -			throwex = true;
  -    }
  -			
  -        if (args != null) {
  -            try {
  -              // Do this to keep format from crying.
  -              // This is better than making a bunch of conditional
  -              // code all over the place.
  -              int n = args.length;
  -              for(int i = 0; i < n; i++)
  -              {
  -                if(null == args[i])
  -                  args[i]="";
  -              }
  -              fmsg = java.text.MessageFormat.format(msg, args);
  -            } 
  -            catch (Exception e) {
  -                fmsg = aResourceBundle.getString(FORMAT_FAILED);
  -                fmsg += " " + msg;
  -            }
  +    if (args != null) 
  +    {
  +      try 
  +      {
  +        // Do this to keep format from crying.
  +        // This is better than making a bunch of conditional
  +        // code all over the place.
  +        int n = args.length;
  +        for(int i = 0; i < n; i++)
  +        {
  +          if(null == args[i])
  +            args[i]="";
           }
  -		else
  -			fmsg = msg;
  +        fmsg = java.text.MessageFormat.format(msg, args);
  +      } 
  +      catch (Exception e) 
  +      {
  +        fmsg = aResourceBundle.getString(FORMAT_FAILED);
  +        fmsg += " " + msg;
  +      }
  +    }
  +    else
  +      fmsg = msg;
   
  -        if (throwex) {
  -            throw new RuntimeException(fmsg);
  -        }
  -        return fmsg;
  +    if (throwex) 
  +    {
  +      throw new RuntimeException(fmsg);
       }
  -	
  - /**
  +    return fmsg;
  +  }
  +  
  +  /**
      * Return a named ResourceBundle for a particular locale.  This method mimics the behavior
      * of ResourceBundle.getBundle(). 
      *
  @@ -347,36 +366,36 @@
      * @throws MissingResourceException  
      */
     public static final ListResourceBundle loadResourceBundle (String className) 
  -	  throws MissingResourceException
  +    throws MissingResourceException
     {
  -	  Locale locale = Locale.getDefault();
  -  
  -	  String suffix = getResourceSuffix(locale);  
  +    Locale locale = Locale.getDefault();
  +    
  +    String suffix = getResourceSuffix(locale);  
       try
       {
  -		//System.out.println("resource " +className+suffix);
  -                                                           // first try with the given locale
  +      //System.out.println("resource " +className+suffix);
  +      // first try with the given locale
         return (ListResourceBundle)ResourceBundle.getBundle (className, locale);
       }
       catch (MissingResourceException e)
       {		
         try                                                  // try to fall back to en_US if we can't load
         {
  -                                                           // Since we can't find the localized property file,
  -                                                           // fall back to en_US.
  +        // Since we can't find the localized property file,
  +        // fall back to en_US.
           return (ListResourceBundle)ResourceBundle.getBundle (XSLT_ERROR_RESOURCES, new Locale ("en", "US"));
         }
         catch (MissingResourceException e2)
         {		  
  -                                                              // Now we are really in trouble.
  -                                                              // very bad, definitely very bad...not going to get very far
  +        // Now we are really in trouble.
  +        // very bad, definitely very bad...not going to get very far
           throw new MissingResourceException ("Could not load any resource bundles."+ className, className,"");
         }
       }
       
     }	
  -	
  -	
  +  
  +  
     /**
      * Return the resource file suffic for the indicated locale
      * For most locales, this will be based the language code.  However
  @@ -387,14 +406,14 @@
      */        
     private static final String getResourceSuffix(Locale locale)
     {
  -        String suffix = "_" + locale.getLanguage();
  -        
  -        String country = locale.getCountry();        
  -        
  -        if (country.equals("TW"))
  -            suffix += "_" + country;
  +    String suffix = "_" + locale.getLanguage();
  +    
  +    String country = locale.getCountry();        
  +    
  +    if (country.equals("TW"))
  +      suffix += "_" + country;
   
  -        return suffix;
  +    return suffix;
     }	
  -    
  +  
   }
  
  
  
  1.2       +3 -1      xml-xalan/src/org/apache/xalan/xpath/xml/XSLResourceBundle.java
  
  Index: XSLResourceBundle.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xpath/xml/XSLResourceBundle.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- XSLResourceBundle.java	1999/11/15 15:42:57	1.1
  +++ XSLResourceBundle.java	2000/03/02 10:22:50	1.2
  @@ -59,7 +59,9 @@
   
   
   /**
  - * This is an interface for error messages
  + * <meta name="usage" content="internal"/>
  + * This is an interface for error messages.  This class is misnamed, 
  + * and should be called XalanResourceBundle, or some such.
    */
   abstract public class XSLResourceBundle extends ListResourceBundle
   {  
  
  
  
  1.7       +2 -1      xml-xalan/src/org/apache/xalan/xslt/AVT.java
  
  Index: AVT.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/AVT.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AVT.java	2000/02/24 21:10:58	1.6
  +++ AVT.java	2000/03/02 10:22:58	1.7
  @@ -64,6 +64,7 @@
   import org.apache.xalan.xpath.xml.XSLMessages;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Class to hold an Attribute Value Template.
    */
   public class AVT implements java.io.Serializable
  @@ -288,7 +289,7 @@
      * @param nsNode The current namespace context (stylesheet tree context).
      * @param NodeList The current Context Node List.
      */
  -  String evaluate(XPathSupport execContext, Node context, 
  +  public String evaluate(XPathSupport execContext, Node context, 
                     org.apache.xalan.xpath.xml.PrefixResolver nsNode, 
                     StringBuffer buf)
       throws org.xml.sax.SAXException
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xslt/AVTPart.java
  
  Index: AVTPart.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/AVTPart.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AVTPart.java	2000/02/24 21:10:58	1.3
  +++ AVTPart.java	2000/03/02 10:22:58	1.4
  @@ -60,6 +60,7 @@
   import org.apache.xalan.xpath.XPathSupport;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Class to hold a part, either a string or XPath, 
    * of an Attribute Value Template.
    */
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/AVTPartSimple.java
  
  Index: AVTPartSimple.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/AVTPartSimple.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- AVTPartSimple.java	2000/02/24 21:10:59	1.2
  +++ AVTPartSimple.java	2000/03/02 10:22:58	1.3
  @@ -60,6 +60,7 @@
   import org.apache.xalan.xpath.XPathSupport;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Simple string part of a complex AVT.
    */
   public class AVTPartSimple extends AVTPart
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xslt/AVTPartXPath.java
  
  Index: AVTPartXPath.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/AVTPartXPath.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- AVTPartXPath.java	2000/02/24 21:10:59	1.4
  +++ AVTPartXPath.java	2000/03/02 10:22:58	1.5
  @@ -61,6 +61,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Simple string part of a complex AVT.
    */
   public class AVTPartXPath extends AVTPart
  
  
  
  1.4       +6 -5      xml-xalan/src/org/apache/xalan/xslt/Arg.java
  
  Index: Arg.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/Arg.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- Arg.java	2000/02/24 21:10:59	1.3
  +++ Arg.java	2000/03/02 10:22:58	1.4
  @@ -60,10 +60,11 @@
   import org.apache.xalan.xpath.XObject;
   
   /**
  + * <meta name="usage" content="internal"/>
    * This class holds an instance of an argument on 
    * the stack.
    */
  -public class Arg
  +class Arg
   {
     QName m_qname;
     XObject m_val;
  @@ -71,7 +72,7 @@
     boolean m_isParamVar;
     
     /**
  -   * Construct a dummy Macro argument.
  +   * Construct a dummy parameter argument.
      */
     Arg()
     {
  @@ -82,7 +83,7 @@
     }
   
     /**
  -   * Construct a Macro argument.
  +   * Construct a parameter argument.
      */
     Arg(QName qname, String expression, boolean isParamVar)
     {
  @@ -93,7 +94,7 @@
     }
   
     /**
  -   * Construct a Macro argument.
  +   * Construct a parameter argument.
      */
     Arg(QName qname, XObject val)
     {
  @@ -105,7 +106,7 @@
   
   
     /**
  -   * Construct a Macro argument.
  +   * Construct a parameter argument.
      */
     Arg(QName qname, XObject val, boolean isParamVar)
     {
  
  
  
  1.12      +1 -0      xml-xalan/src/org/apache/xalan/xslt/Constants.java
  
  Index: Constants.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/Constants.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- Constants.java	2000/02/24 21:10:59	1.11
  +++ Constants.java	2000/03/02 10:22:59	1.12
  @@ -57,6 +57,7 @@
   package org.apache.xalan.xslt;
    
   /**
  + * <meta name="usage" content="advanced"/>
    * Primary constants used in the XSLTEngineImpl classes.
    */
   public class Constants
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xslt/Counter.java
  
  Index: Counter.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/Counter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Counter.java	2000/02/24 21:10:59	1.4
  +++ Counter.java	2000/03/02 10:22:59	1.5
  @@ -65,6 +65,7 @@
   import org.apache.xalan.xpath.XPath;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A class that does incremental counting for support of xsl:number.
    * This class stores a cache of counted nodes (m_countNodes). 
    * It tries to cache the counted nodes in document order... 
  
  
  
  1.4       +2 -1      xml-xalan/src/org/apache/xalan/xslt/CountersTable.java
  
  Index: CountersTable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/CountersTable.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- CountersTable.java	2000/02/24 21:10:59	1.3
  +++ CountersTable.java	2000/03/02 10:22:59	1.4
  @@ -65,12 +65,13 @@
   import org.xml.sax.SAXException;
   
   /**
  + * <meta name="usage" content="internal"/>
    * This is a table of counters, keyed by ElemNumber objects, each 
    * of which has a list of Counter objects.  This really isn't a true 
    * table, it is more like a list of lists (there must be a technical 
    * term for that...).
    */
  -public class CountersTable extends Hashtable
  +class CountersTable extends Hashtable
   {  
     /**
      * Construct a CountersTable.
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/DecimalToRoman.java
  
  Index: DecimalToRoman.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/DecimalToRoman.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DecimalToRoman.java	2000/02/24 21:10:59	1.2
  +++ DecimalToRoman.java	2000/03/02 10:22:59	1.3
  @@ -58,6 +58,7 @@
   package org.apache.xalan.xslt;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Structure to help in converting integers to roman numerals
    * @see long2roman
    * @see m_romanConvertTable
  
  
  
  1.7       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemApplyImport.java
  
  Index: ElemApplyImport.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemApplyImport.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ElemApplyImport.java	2000/02/24 21:10:59	1.6
  +++ ElemApplyImport.java	2000/03/02 10:22:59	1.7
  @@ -64,6 +64,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:apply-imports.
  + */
   public class ElemApplyImport extends ElemTemplateElement
   {
     public int getXSLToken()
  
  
  
  1.9       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemApplyTemplates.java
  
  Index: ElemApplyTemplates.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemApplyTemplates.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ElemApplyTemplates.java	2000/02/24 21:10:59	1.8
  +++ ElemApplyTemplates.java	2000/03/02 10:23:00	1.9
  @@ -64,6 +64,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:apply-templates.
  + */
   public class ElemApplyTemplates extends ElemForEach
   {
     public QName m_mode = null;
  
  
  
  1.10      +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemAttribute.java
  
  Index: ElemAttribute.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemAttribute.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ElemAttribute.java	2000/02/24 21:10:59	1.9
  +++ ElemAttribute.java	2000/03/02 10:23:00	1.10
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:attribute.
  + */
   public class ElemAttribute extends ElemTemplateElement
   {
     public AVT m_name_avt = null;
  
  
  
  1.6       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemAttributeSet.java
  
  Index: ElemAttributeSet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemAttributeSet.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ElemAttributeSet.java	2000/02/24 21:10:59	1.5
  +++ ElemAttributeSet.java	2000/03/02 10:23:00	1.6
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   import java.util.Stack;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:attribute-set.
  + */
   public class ElemAttributeSet extends ElemUse
   {
     public QName m_qname = null;
  
  
  
  1.12      +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemCallTemplate.java
  
  Index: ElemCallTemplate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemCallTemplate.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ElemCallTemplate.java	2000/02/28 17:42:34	1.11
  +++ ElemCallTemplate.java	2000/03/02 10:23:00	1.12
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:call-template.
  + */
   public class ElemCallTemplate extends ElemTemplateElement
   {
     public QName m_templateName = null;
  
  
  
  1.8       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemChoose.java
  
  Index: ElemChoose.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemChoose.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ElemChoose.java	2000/02/24 21:10:59	1.7
  +++ ElemChoose.java	2000/03/02 10:23:00	1.8
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:choose.
  + */
   public class ElemChoose extends ElemTemplateElement
   {  
     public int getXSLToken()
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemComment.java
  
  Index: ElemComment.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemComment.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemComment.java	2000/02/24 21:10:59	1.3
  +++ ElemComment.java	2000/03/02 10:23:00	1.4
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:comment.
  + */
   public class ElemComment extends ElemTemplateElement
   {
     public int getXSLToken()
  
  
  
  1.5       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemCopy.java
  
  Index: ElemCopy.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemCopy.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ElemCopy.java	2000/02/24 21:10:59	1.4
  +++ ElemCopy.java	2000/03/02 10:23:00	1.5
  @@ -64,6 +64,10 @@
   import org.apache.xalan.xslt.trace.*;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:copy.
  + */
   public class ElemCopy extends ElemUse
   {
     public QName m_attributeSetsNames[] = null;
  
  
  
  1.13      +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemCopyOf.java
  
  Index: ElemCopyOf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemCopyOf.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- ElemCopyOf.java	2000/02/29 23:17:42	1.12
  +++ ElemCopyOf.java	2000/03/02 10:23:01	1.13
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   import org.apache.xalan.xpath.xml.QName;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:copy-of.
  + */
   public class ElemCopyOf extends ElemTemplateElement
   {
     public XPath m_selectPattern = null;
  
  
  
  1.7       +4 -1      xml-xalan/src/org/apache/xalan/xslt/ElemDecimalFormat.java
  
  Index: ElemDecimalFormat.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemDecimalFormat.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ElemDecimalFormat.java	2000/02/24 21:10:59	1.6
  +++ ElemDecimalFormat.java	2000/03/02 10:23:01	1.7
  @@ -66,7 +66,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.*;
   
  -
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:decimal-format.
  + */
   public class ElemDecimalFormat extends ElemTemplateElement
   {
     public XPath m_countMatchPattern = null;
  
  
  
  1.11      +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemElement.java
  
  Index: ElemElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemElement.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ElemElement.java	2000/02/24 21:10:59	1.10
  +++ ElemElement.java	2000/03/02 10:23:01	1.11
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:decimal-format.
  + */
   public class ElemElement extends ElemUse
   {
     public AVT m_name_avt = null;
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/ElemEmpty.java
  
  Index: ElemEmpty.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemEmpty.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ElemEmpty.java	2000/02/24 21:10:59	1.2
  +++ ElemEmpty.java	2000/03/02 10:23:01	1.3
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Simple empty elem to push on the stack when nothing 
    * else got pushed, so that pop() works correctly.
    */
  
  
  
  1.9       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemExtensionCall.java
  
  Index: ElemExtensionCall.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemExtensionCall.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ElemExtensionCall.java	2000/02/24 21:11:00	1.8
  +++ ElemExtensionCall.java	2000/03/02 10:23:01	1.9
  @@ -70,6 +70,10 @@
   import java.io.*;
   import java.util.*;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement an extension element.
  + */
   public class ElemExtensionCall extends ElemLiteralResult
   {
     // ExtensionNSHandler nsh;
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemFallback.java
  
  Index: ElemFallback.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemFallback.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemFallback.java	2000/02/24 21:11:00	1.3
  +++ ElemFallback.java	2000/03/02 10:23:02	1.4
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:fallback.
  + */
   public class ElemFallback extends ElemTemplateElement
   {
     public int getXSLToken()
  
  
  
  1.7       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemForEach.java
  
  Index: ElemForEach.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemForEach.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ElemForEach.java	2000/02/24 21:11:00	1.6
  +++ ElemForEach.java	2000/03/02 10:23:02	1.7
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:for-each.
  + */
   public class ElemForEach extends ElemTemplateElement
   {
     public XPath m_selectPattern = null;
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemIf.java
  
  Index: ElemIf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemIf.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemIf.java	2000/02/24 21:11:00	1.3
  +++ ElemIf.java	2000/03/02 10:23:02	1.4
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:if.
  + */
   public class ElemIf extends ElemTemplateElement
   {
     public XPath m_test = null;
  
  
  
  1.18      +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemLiteralResult.java
  
  Index: ElemLiteralResult.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemLiteralResult.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- ElemLiteralResult.java	2000/02/24 21:11:00	1.17
  +++ ElemLiteralResult.java	2000/03/02 10:23:02	1.18
  @@ -70,6 +70,10 @@
   import java.io.*;
   import java.util.*;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement a Literal Result Element.
  + */
   public class ElemLiteralResult extends ElemUse
   {
     public Vector m_avts = null;
  
  
  
  1.6       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemMessage.java
  
  Index: ElemMessage.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemMessage.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ElemMessage.java	2000/02/24 21:11:00	1.5
  +++ ElemMessage.java	2000/03/02 10:23:02	1.6
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:message.
  + */
   public class ElemMessage extends ElemTemplateElement
   {
     private String m_terminate = Constants.ATTRVAL_NO;  // default value	
  
  
  
  1.11      +23 -28    xml-xalan/src/org/apache/xalan/xslt/ElemNumber.java
  
  Index: ElemNumber.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemNumber.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- ElemNumber.java	2000/02/24 21:11:00	1.10
  +++ ElemNumber.java	2000/03/02 10:23:02	1.11
  @@ -66,13 +66,17 @@
   import org.apache.xalan.xslt.res.*;
   // import org.apache.xalan.xpath.dtm.*;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:number.
  + */
   public class ElemNumber extends ElemTemplateElement
   {
     /**
      * Only nodes are counted that match this pattern.
      */
     public XPath m_countMatchPattern = null;
  -    
  +  
     /**
      * Specifies where to count from.
      * For level="single" or level="multiple":
  @@ -317,7 +321,7 @@
      * @param namespaceContext The context in which namespaces in the
      * queries are supposed to be expanded.
      */
  -  Node findPrecedingOrAncestorOrSelf(XPathSupport execContext, 
  +  private Node findPrecedingOrAncestorOrSelf(XPathSupport execContext, 
                                        XPath fromMatchPattern, 
                                        XPath countMatchPattern,
                                        Node context,
  @@ -359,15 +363,6 @@
       return context;
     }
     
  -    /**
  -   * Get the count match pattern, or a default value.
  -   */
  -  XPath getCountMatchPattern()
  -    throws org.xml.sax.SAXException
  -  {
  -    return m_countMatchPattern;
  -  }
  -
     /**
      * Get the count match pattern, or a default value.
      */
  @@ -402,7 +397,7 @@
       }
       return countMatchPattern;
     }
  -    
  +  
     /**
      * Given an XML source node, get the count according to the
      * parameters set up by the xsl:number attributes.
  @@ -534,8 +529,8 @@
       if(Constants.NUMBERLEVEL_ANY == m_level)
       {
         target= findPrecedingOrAncestorOrSelf(execContext, m_fromMatchPattern, 
  -                                              countMatchPattern,
  -                                              sourceNode, this);
  +                                            countMatchPattern,
  +                                            sourceNode, this);
         
       }
       else
  @@ -557,7 +552,7 @@
      * @param node Count this node and it's ancestors.
      * @return The number of ancestors that match the pattern.
      */
  -  public NodeList getMatchingAncestors(XPathSupport execContext, 
  +  NodeList getMatchingAncestors(XPathSupport execContext, 
                                          Node node, 
                                          boolean stopAtFirstFound)
       throws org.xml.sax.SAXException
  @@ -590,7 +585,7 @@
           if(stopAtFirstFound)
             break;
         }
  -     
  +      
         node = execContext.getParentOfNode(node);
       }
       return ancestors;
  @@ -636,7 +631,7 @@
     /**
      *
      */
  -  DecimalFormat getNumberFormatter(XSLTEngineImpl processor, Node contextNode)
  +  private DecimalFormat getNumberFormatter(XSLTEngineImpl processor, Node contextNode)
       throws SAXException,
       java.net.MalformedURLException,
       java.io.FileNotFoundException,
  @@ -715,8 +710,8 @@
   
       NumberFormatStringTokenizer formatTokenizer = new NumberFormatStringTokenizer(formatValue);
       
  -	int sepCount = 0;                  // keep track of seperators
  -	// Loop through all the numbers in the list.
  +    int sepCount = 0;                  // keep track of seperators
  +    // Loop through all the numbers in the list.
       for(int i = 0; i < nNumbers; i++)
       {
         // Loop to the next digit, letter, or separator.
  @@ -736,7 +731,7 @@
           else if(formatTokenizer.isLetterOrDigitAhead())
           {          
             formatTokenString = formatToken;
  -         
  +          
             // Append the formatToken string...
             // For instance [2][1][5] with a format value of "1--1. "
             // should format to "2--1--5. " (I guess).
  @@ -786,8 +781,8 @@
         
         getFormattedNumber(processor, contextNode, numberType, numberWidth, list[i], formattedNumber);
         isFirstToken = false;              // After the first pass, this should be false
  -        
  -    }// end for loop
  +      
  +    } // end for loop
       
   
       // Check to see if we finished up the format string...
  @@ -812,11 +807,11 @@
     * Get Formatted number
     */
     private void getFormattedNumber(XSLTEngineImpl processor,
  -                                    Node contextNode,
  -                                    char numberType,
  -                                    int numberWidth,
  -                                    int listElement,
  -                                    StringBuffer formattedNumber)
  +                                  Node contextNode,
  +                                  char numberType,
  +                                  int numberWidth,
  +                                  int listElement,
  +                                  StringBuffer formattedNumber)
       throws org.xml.sax.SAXException,
              java.net.MalformedURLException,
              java.io.FileNotFoundException,
  @@ -1186,7 +1181,7 @@
             i++;
           } // end else if
         } // end do while
  -       while ( i < multiplier.length);	  	
  +              while ( i < multiplier.length);	  	
       }
   
       // Now do additive part...
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemOtherwise.java
  
  Index: ElemOtherwise.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemOtherwise.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemOtherwise.java	2000/02/24 21:11:00	1.3
  +++ ElemOtherwise.java	2000/03/02 10:23:03	1.4
  @@ -61,6 +61,10 @@
   import org.apache.xalan.xpath.*;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:otherwise.
  + */
   public class ElemOtherwise extends ElemTemplateElement
   {  
     public int getXSLToken()
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemPI.java
  
  Index: ElemPI.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemPI.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemPI.java	2000/02/24 21:11:00	1.3
  +++ ElemPI.java	2000/03/02 10:23:03	1.4
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:processing-instruction.
  + */
   public class ElemPI extends ElemTemplateElement
   {
     public AVT m_name_atv = null;
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemParam.java
  
  Index: ElemParam.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemParam.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemParam.java	2000/02/24 21:11:00	1.3
  +++ ElemParam.java	2000/03/02 10:23:03	1.4
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xslt.trace.*;
   import org.apache.xalan.xpath.xml.QName;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:param.
  + */
   public class ElemParam extends ElemVariable
   {
     public int getXSLToken()
  
  
  
  1.6       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemSort.java
  
  Index: ElemSort.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemSort.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ElemSort.java	2000/02/24 21:11:00	1.5
  +++ ElemSort.java	2000/03/02 10:23:03	1.6
  @@ -61,6 +61,10 @@
   import org.apache.xalan.xpath.*;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
    
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:sort.
  + */
   public class ElemSort extends ElemTemplateElement
   {
     public XPath m_selectPattern = null;
  
  
  
  1.7       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemTemplate.java
  
  Index: ElemTemplate.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemTemplate.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- ElemTemplate.java	2000/02/24 21:11:00	1.6
  +++ ElemTemplate.java	2000/03/02 10:23:03	1.7
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:template.
  + */
   public class ElemTemplate extends ElemTemplateElement
   {
     public XPath m_matchPattern = null;
  
  
  
  1.25      +2 -6      xml-xalan/src/org/apache/xalan/xslt/ElemTemplateElement.java
  
  Index: ElemTemplateElement.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemTemplateElement.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- ElemTemplateElement.java	2000/03/01 22:38:46	1.24
  +++ ElemTemplateElement.java	2000/03/02 10:23:03	1.25
  @@ -71,6 +71,7 @@
   import org.apache.xalan.xpath.xml.NameSpace;
   
   /** 
  + * <meta name="usage" content="advanced"/>
    * An instance of this class represents an element inside
    * an xsl:template class.  It has a single "execute" method
    * which is expected to perform the given action on the
  @@ -1362,10 +1363,5 @@
     {
       return m_baseident;
     }
  -  
  -  class xhashtable extends Hashtable
  -  {
  -    public Object get(Object obj){return null; }
  -  }
  -  
  +    
   }
  
  
  
  1.4       +2 -0      xml-xalan/src/org/apache/xalan/xslt/ElemText.java
  
  Index: ElemText.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemText.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemText.java	2000/02/24 21:11:00	1.3
  +++ ElemText.java	2000/03/02 10:23:03	1.4
  @@ -64,6 +64,8 @@
   import java.util.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:template.
    * This primarily acts as a marker on the element 
    * stack to signal that whitespace should be preserved.
    */
  
  
  
  1.5       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemTextLiteral.java
  
  Index: ElemTextLiteral.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemTextLiteral.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ElemTextLiteral.java	2000/02/24 21:11:00	1.4
  +++ ElemTextLiteral.java	2000/03/02 10:23:04	1.5
  @@ -60,6 +60,10 @@
   import org.xml.sax.*;
   import org.apache.xalan.xpath.xml.QName;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement a text literal.
  + */
   public class ElemTextLiteral extends ElemTemplateElement
   {
     public boolean m_isCData;
  
  
  
  1.3       +2 -0      xml-xalan/src/org/apache/xalan/xslt/ElemUse.java
  
  Index: ElemUse.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemUse.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ElemUse.java	2000/02/24 21:11:00	1.2
  +++ ElemUse.java	2000/03/02 10:23:04	1.3
  @@ -63,6 +63,8 @@
   import java.util.StringTokenizer;
   
   /**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:use.
    * This acts as a superclass for ElemCopy, ElemAttributeSet,
    * ElemElement, and ElemLiteralResult, on order to implement 
    * shared behavior the use-attribute-sets attribute.
  
  
  
  1.6       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemValueOf.java
  
  Index: ElemValueOf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemValueOf.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ElemValueOf.java	2000/02/24 21:11:00	1.5
  +++ ElemValueOf.java	2000/03/02 10:23:04	1.6
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:value-of.
  + */
   public class ElemValueOf extends ElemTemplateElement
   {
     /**
  
  
  
  1.6       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemVariable.java
  
  Index: ElemVariable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemVariable.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ElemVariable.java	2000/02/24 21:11:00	1.5
  +++ ElemVariable.java	2000/03/02 10:23:04	1.6
  @@ -63,6 +63,10 @@
   import org.apache.xalan.xslt.trace.SelectionEvent;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:variable.
  + */
   public class ElemVariable extends ElemTemplateElement
   {
     public XPath m_selectPattern = null;
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemWhen.java
  
  Index: ElemWhen.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemWhen.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemWhen.java	2000/02/24 21:11:00	1.3
  +++ ElemWhen.java	2000/03/02 10:23:04	1.4
  @@ -61,6 +61,10 @@
   import org.apache.xalan.xpath.*;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:when.
  + */
   public class ElemWhen extends ElemTemplateElement
   {
     public XPath m_test = null;
  
  
  
  1.4       +4 -0      xml-xalan/src/org/apache/xalan/xslt/ElemWithParam.java
  
  Index: ElemWithParam.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ElemWithParam.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ElemWithParam.java	2000/02/24 21:11:01	1.3
  +++ ElemWithParam.java	2000/03/02 10:23:04	1.4
  @@ -62,6 +62,10 @@
   import org.apache.xalan.xpath.xml.QName;
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
  +/**
  + * <meta name="usage" content="advanced"/>
  + * Implement xsl:with-param.
  + */
   public class ElemWithParam extends ElemTemplateElement
   {
     public XPath m_selectPattern = null;
  
  
  
  1.8       +1 -0      xml-xalan/src/org/apache/xalan/xslt/ExtensionNSHandler.java
  
  Index: ExtensionNSHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ExtensionNSHandler.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ExtensionNSHandler.java	2000/02/24 21:11:01	1.7
  +++ ExtensionNSHandler.java	2000/03/02 10:23:05	1.8
  @@ -68,6 +68,7 @@
   import org.apache.xalan.xpath.XPathProcessorException;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Represents an extension namespace. Provides functions
    * to call into the extension via both element syntax and function
    * syntax. Extends XPath's extension function capability to a full
  
  
  
  1.12      +1 -0      xml-xalan/src/org/apache/xalan/xslt/FuncDocument.java
  
  Index: FuncDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/FuncDocument.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- FuncDocument.java	2000/02/24 21:11:01	1.11
  +++ FuncDocument.java	2000/03/02 10:23:05	1.12
  @@ -65,6 +65,7 @@
   import org.apache.xalan.xpath.xml.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the Doc() function.
    * 
    * When the document function has exactly one argument and the argument 
  
  
  
  1.9       +1 -0      xml-xalan/src/org/apache/xalan/xslt/FuncFormatNumb.java
  
  Index: FuncFormatNumb.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/FuncFormatNumb.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- FuncFormatNumb.java	2000/02/24 21:11:01	1.8
  +++ FuncFormatNumb.java	2000/03/02 10:23:05	1.9
  @@ -63,6 +63,7 @@
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Execute the FormatNumber() function.
    */
   public class FuncFormatNumb extends Function
  
  
  
  1.11      +2 -1      xml-xalan/src/org/apache/xalan/xslt/KeyTable.java
  
  Index: KeyTable.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/KeyTable.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- KeyTable.java	2000/02/24 21:11:01	1.10
  +++ KeyTable.java	2000/03/02 10:23:05	1.11
  @@ -68,6 +68,7 @@
   // import org.apache.xalan.xpath.dtm.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Table of element keys, keyed by document node.  An instance of this 
    * class is keyed by a Document node that should be matched with the 
    * root of the current context.  It contains a table of name mappings 
  @@ -101,7 +102,7 @@
      * @param keyDeclarations The stylesheet's xsl:key declarations.
      * @param xmlLiaison The parser liaison for support of getNodeData(useNode).
      */
  -  public KeyTable(Node doc, Node startNode, org.apache.xalan.xpath.xml.PrefixResolver nscontext, 
  +  KeyTable(Node doc, Node startNode, org.apache.xalan.xpath.xml.PrefixResolver nscontext, 
              String name, Vector keyDeclarations, XMLParserLiaison xmlLiaison)
      throws org.xml.sax.SAXException
     {    
  
  
  
  1.7       +2 -1      xml-xalan/src/org/apache/xalan/xslt/NodeSortKey.java
  
  Index: NodeSortKey.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/NodeSortKey.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- NodeSortKey.java	2000/02/24 21:11:01	1.6
  +++ NodeSortKey.java	2000/03/02 10:23:05	1.7
  @@ -64,9 +64,10 @@
   
   
   /**
  + * <meta name="usage" content="internal"/>
    * Data structure for use by the NodeSorter class.
    */
  -public class NodeSortKey
  +class NodeSortKey
   {
     XPath m_selectPat;
     boolean m_treatAsNumbers;
  
  
  
  1.9       +1 -1      xml-xalan/src/org/apache/xalan/xslt/NodeSorter.java
  
  Index: NodeSorter.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/NodeSorter.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- NodeSorter.java	2000/02/24 21:11:01	1.8
  +++ NodeSorter.java	2000/03/02 10:23:05	1.9
  @@ -64,8 +64,8 @@
   import org.apache.xalan.xpath.xml.NodeVector;
   
   /**
  + * <meta name="usage" content="internal"/>
    * This class can sort vectors of DOM nodes according to a select pattern.
  - * TODO: Optimize this so it can reuse queries for each of the nodes.
    */
   class NodeSorter
   {
  
  
  
  1.3       +8 -232    xml-xalan/src/org/apache/xalan/xslt/NumeratorFormatter.java
  
  Index: NumeratorFormatter.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/NumeratorFormatter.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NumeratorFormatter.java	2000/02/24 21:11:01	1.2
  +++ NumeratorFormatter.java	2000/03/02 10:23:06	1.3
  @@ -63,10 +63,11 @@
   import java.util.*;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Converts enumerated numbers into strings, using the XSL conversion attributes.
    * Having this in a class helps avoid being forced to extract the attributes repeatedly.
    */
  -public class NumeratorFormatter
  +class NumeratorFormatter
   {
     protected Element m_xslNumberElement;
     NumberFormatStringTokenizer m_formatTokenizer;
  @@ -131,234 +132,9 @@
       java.io.FileNotFoundException,
       java.io.IOException
     {
  -    /*
  -    // See http://www.w3.org/TR/WD-xsl#convert for the form
  -    // of the format string, which tells how the numbers should be
  -    // formatted.
  -    String formatValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                             Constants.ATTRNAME_FORMAT,
  -                                             contextNode);
  -
  -    if(null == formatValue) formatValue = "1";
  -    m_formatTokenizer = new NumberFormatStringTokenizer(formatValue);
  -
  -    // The letter-value attribute disambiguates between numbering schemes
  -    // that use letters. A value of "alphabetic" specifies the alphabetic
  -    // sequence; a value of "other" specifies the other sequence.
  -    // TODO: Handle letter-value attribute.
  -    String letterValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                             Constants.ATTRNAME_LETTERVALUE,
  -                                             contextNode);
  -    if(null != letterValue)
  -    {
  -      m_processor.warn(null, contextNode, Constants.ATTRNAME_LETTERVALUE+" not supported yet!");
  -    }
  -
  -    // When numbering with an alphabetic sequence, the xml:lang
  -    // attribute specifies which language's alphabet is to be used.
  -    String langValue = m_processor.getAttrVal(m_xslNumberElement, "lang");
  -    if(null != langValue)
  -    {
  -      // Not really sure what to do about the country code, so I use the
  -      // default from the system.
  -      // TODO: fix xml:lang handling.
  -      m_locale = new Locale(langValue.toUpperCase(),
  -                            Locale.getDefault().getDisplayCountry());
  -      if(null == m_locale)
  -      {
  -        m_processor.warn(null, contextNode, "Warning: Could not find locale for xml:lang="+langValue);
  -        m_locale = Locale.getDefault();
  -      }
  -    }
  -    else
  -    {
  -      m_locale = Locale.getDefault();
  -    }
  -
  -    // Helper to format local specific numbers to strings.
  -    m_formatter = java.text.NumberFormat.getNumberInstance(m_locale);
  -
  -    // The digit-group-sep attribute gives the separator between groups
  -    // of digits, and the optional n-digits-per-group specifies the
  -    // number of digits per group. For example, digit-group-sep=","
  -    // and n-digits-per-group="3" would produce numbers of the form 1,000,000.
  -    String digitGroupSepValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                                    "grouping-seperator",
  -                                                    contextNode);
  -    if(null == digitGroupSepValue)
  -    {
  -      digitGroupSepValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                                           Constants.ATTRNAME_DIGITGROUPSEP,
  -                                                           contextNode);
  -      if(null != digitGroupSepValue)
  -        m_processor.warn("Old syntax: digit-group-sep has been renamed to grouping-seperator");
  -    }
  -
  -    String nDigitsPerGroupValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                                                  "grouping-size",
  -                                                                  contextNode);
  -    if(null == nDigitsPerGroupValue)
  -    {
  -      nDigitsPerGroupValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                                             Constants.ATTRNAME_NDIGITSPERGROUP,
  -                                                             contextNode);
  -      if(null != nDigitsPerGroupValue)
  -        m_processor.warn("Old syntax: digit-group-sep has been renamed to grouping-seperator");
  -    }
  -    // int nDigitsPerGroup = Integer.valueOf(nDigitsPerGroupValue).intValue();
  -
  -    // TODO: Handle digit-group attributes
  -    if((null != digitGroupSepValue) || (null != nDigitsPerGroupValue))
  -    {
  -      m_formatter.setGroupingUsed(true);
  -    }
  -
  -    // The sequence-src attribute gives the URI of a text resource
  -    // that contains a whitespace separated list of the members of
  -    // the numbering sequence.
  -    // (Used with letter-value="other", I think.)
  -    String sequenceSrcValue = m_processor.getProcessedAttrVal(m_xslNumberElement,
  -                                                  Constants.ATTRNAME_SEQUENCESRC,
  -                                                  contextNode);
  -    if(null != sequenceSrcValue)
  -    {
  -      m_processor.warn(null, contextNode, Constants.ATTRNAME_SEQUENCESRC+
  -                              " is no longer supported by the 19990709 draft!");
  -    }
  -    */
     }
   
     /**
  -   * Format a vector of numbers into a formatted string.
  -   * @param xslNumberElement Element that takes %conversion-atts; attributes.
  -   * @param list Array of one or more integer numbers.
  -   * @return String that represents list according to
  -   * %conversion-atts; attributes.
  -   * TODO: Optimize formatNumberList so that it caches the last count and
  -   * reuses that info for the next count.
  -   */
  -  String formatNumberList(int[] list)
  -  {
  -    String formattedNumber = "";
  -    int nNumbers = list.length;
  -    char numberType = '1';
  -    int numberWidth = 1;
  -    String formatToken;
  -    String sepString = "";
  -    String lastSepString = null;
  -    String padString = m_formatter.format(0);
  -    String lookahead= null; // next token
  -    m_formatTokenizer.reset();
  -    for(int i = 0; i < nNumbers; i++)
  -    {
  -      while(m_formatTokenizer.hasMoreTokens())
  -      {
  -        if( lookahead != null )
  -        {
  -          formatToken = lookahead;
  -          lookahead = null;
  -        }
  -        else
  -        {
  -          formatToken = m_formatTokenizer.nextToken();
  -        }
  -        if(Character.isLetterOrDigit(formatToken.charAt(formatToken.length()-1)))
  -        {
  -          numberWidth = formatToken.length();
  -          numberType = formatToken.charAt(numberWidth-1);
  -          break; // from while(tokenizer.hasMoreTokens())
  -        }
  -        else
  -        {
  -          sepString = formatToken;
  -          while(m_formatTokenizer.hasMoreTokens())
  -          {
  -            lookahead = m_formatTokenizer.nextToken();
  -            if(!Character.isLetterOrDigit(lookahead.charAt(0)))
  -            {
  -              sepString += lookahead;
  -              lookahead = null; // consume
  -            }
  -            else
  -            {
  -              break; // from inner while loop
  -            }
  -          }
  -          if(!m_formatTokenizer.hasMoreTokens())
  -          {
  -            lastSepString = sepString;
  -
  -            // crufty bit to strip whitespace off of separator
  -            // if it is the end string.
  -            // This probably isn't right.
  -            int lastPos = sepString.length() - 1;
  -            int k;
  -            for(k = lastPos; k >= 0; k--)
  -            {
  -              if(!Character.isWhitespace(sepString.charAt(k)))
  -              {
  -                break; // from for loop
  -              }
  -            }
  -            sepString = sepString.substring(0, k+1);
  -          }
  -
  -        }
  -      } // end while
  -
  -      switch(numberType)
  -      {
  -      case 'A':
  -        formattedNumber += (sepString + int2alphaCount(list[i], m_alphaCountTable));
  -        break;
  -      case 'a':
  -        formattedNumber += (sepString + int2alphaCount(list[i], m_alphaCountTable).toLowerCase(m_locale));
  -        break;
  -      case 'I':
  -        formattedNumber += (sepString + long2roman(list[i], true));
  -        break;
  -      case 'i':
  -        formattedNumber += (sepString + long2roman(list[i], true).toLowerCase(m_locale));
  -        break;
  -      default: // "1"
  -        String numString = m_formatter.format(list[i]);
  -        int nPadding = numberWidth - numString.length();
  -        formattedNumber += sepString;
  -        for(int k = 0; k < nPadding; k++)
  -        {
  -          formattedNumber += padString;
  -        }
  -        formattedNumber += numString;
  -      }
  -    }
  -
  -    // Check to see if we finished up the format string...
  -    if(null == lastSepString)
  -    {
  -      lastSepString = "";
  -      while(m_formatTokenizer.hasMoreTokens())
  -      {
  -        lookahead = m_formatTokenizer.nextToken();
  -        if(!Character.isLetterOrDigit(lookahead.charAt(0)))
  -        {
  -          lastSepString += lookahead;
  -        }
  -        else
  -        {
  -          lastSepString = "";
  -        }
  -      }
  -    }
  -
  -    if(null != lastSepString)
  -    {
  -      formattedNumber += lastSepString;
  -    }
  -
  -    return formattedNumber;
  -  } // end formatNumberList method
  -
  -  /**
      * Convert a long integer into alphabetic counting, in other words
      * count using the sequence A B C ... Z AA AB AC.... etc.
      * @param val Value to convert -- must be greater than zero.
  @@ -449,7 +225,7 @@
      * @see DecimalToRoman
      * @see m_romanConvertTable
      */
  -  protected String long2roman(long val, boolean prefixesAreOK)
  +  String long2roman(long val, boolean prefixesAreOK)
     {
       if(val <= 0)
       {
  @@ -498,12 +274,12 @@
   
    /**
        * Construct a NumberFormatStringTokenizer.
        */
  -    public NumberFormatStringTokenizer(String str) 
    {
  +    NumberFormatStringTokenizer(String str) 
    {
         this.str = str;
         maxPosition = str.length();
       }
    
    /**
        * Reset tokenizer so that nextToken() starts from the beginning.
  -     */
    public void reset()
    {
      currentPosition = 0;
  +     */
    void reset()
    {
      currentPosition = 0;
       }
   
    /**
        * Returns the next token from this string tokenizer.
  @@ -512,7 +288,7 @@
        * @exception  NoSuchElementException  if there are no more tokens in this
        *               tokenizer's string.
        */
  -    public String nextToken()
  +    String nextToken()
       {
         if (currentPosition >= maxPosition)
         {
  @@ -537,7 +313,7 @@
        *
        * @return true if <code>nextToken</code> can be called 
     * without throwing an exception.
        */
  -    public boolean hasMoreTokens()
  +    boolean hasMoreTokens()
       {
         return (currentPosition >= maxPosition) ? false : true;
       }
  @@ -550,7 +326,7 @@
        *          delimiter set.
        * @see     java.util.StringTokenizer#nextToken()
        */
  -    public int countTokens()
  +    int countTokens()
       {
         int count = 0;
         int currpos = currentPosition;
  
  
  
  1.16      +4 -6      xml-xalan/src/org/apache/xalan/xslt/Process.java
  
  Index: Process.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/Process.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Process.java	2000/02/25 19:08:39	1.15
  +++ Process.java	2000/03/02 10:23:06	1.16
  @@ -71,10 +71,8 @@
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   import org.apache.xalan.xpath.xml.XSLMessages;
   
  -// temp
  -// import org.apache.xalan.xpath.xml.xml4j.ProcessXSL;
  -
   /**
  + * <meta name="usage" content="general"/>
    * The main() method handles the Xalan command-line interface.
    */
   public class Process
  @@ -568,10 +566,10 @@
           if(doStackDumpOnError)
             xpe.printStackTrace(dumpWriter);
   
  -        if((null != xpe.m_styleNode)
  -           &&  xpe.m_styleNode instanceof ElemTemplateElement)
  +        if((null != xpe.getStylesheetNode())
  +           &&  xpe.getStylesheetNode() instanceof ElemTemplateElement)
           {
  -          ElemTemplateElement elem = (ElemTemplateElement)xpe.m_styleNode;
  +          ElemTemplateElement elem = (ElemTemplateElement)xpe.getStylesheetNode();
             diagnosticsWriter.println(elem.m_stylesheet.m_baseIdent+"; " + resbundle.getString("line")+
                                       elem.m_lineNumber+"; " + resbundle.getString("column")+
                                       elem.m_columnNumber+"; "+xpe.getMessage());
  
  
  
  1.2       +1 -0      xml-xalan/src/org/apache/xalan/xslt/ResultNameSpace.java
  
  Index: ResultNameSpace.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ResultNameSpace.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- ResultNameSpace.java	1999/11/30 20:27:54	1.1
  +++ ResultNameSpace.java	2000/03/02 10:23:06	1.2
  @@ -1,6 +1,7 @@
   package org.apache.xalan.xslt;
   
   /**
  + * <meta name="usage" content="internal"/>
    * A representation of a result namespace.  One of these will
    * be pushed on the result tree namespace stack for each
    * result tree element.
  
  
  
  1.5       +1 -8      xml-xalan/src/org/apache/xalan/xslt/ResultTreeFrag.java
  
  Index: ResultTreeFrag.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/ResultTreeFrag.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ResultTreeFrag.java	2000/02/24 21:11:02	1.4
  +++ ResultTreeFrag.java	2000/03/02 10:23:06	1.5
  @@ -64,6 +64,7 @@
   import org.apache.xalan.xpath.xml.XSLMessages;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Container of a result tree fragment.
    */
   public class ResultTreeFrag implements DocumentFragment
  @@ -93,14 +94,6 @@
     void error(int msg)
     {
   		   throw new RuntimeException(XSLMessages.createMessage(msg, null));
  -  }
  -
  -  /**
  -   * Throw an error.
  -   */
  -  void error(int msg, Object[]args)
  -  {
  -		   throw new RuntimeException(XSLMessages.createMessage(msg, args));
     }
   
     /**
  
  
  
  1.32      +0 -11     xml-xalan/src/org/apache/xalan/xslt/Stylesheet.java
  
  Index: Stylesheet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/Stylesheet.java,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- Stylesheet.java	2000/02/24 21:11:02	1.31
  +++ Stylesheet.java	2000/03/02 10:23:07	1.32
  @@ -1332,16 +1332,6 @@
     }
   
     /**
  -   * Get an Expression object from a select node.  Does not cache!
  -   */
  -  final XPath getExpression(AttributeList attrs, String key, PrefixResolver nsContext)
  -    throws org.xml.sax.SAXException
  -  {
  -    String val = attrs.getValue(key);
  -    return (null != val) ? createXPath(val, nsContext) : null;
  -  }
  -
  -  /**
      * Get the type of the node.  We'll pretend we're a Document.
      */
     public short              getNodeType()
  @@ -1486,7 +1476,6 @@
     //==========================================================
     // SECTION: XSL directive handling functions
     //==========================================================
  -  private void ____XSL_INSTRUCTIONS____(){}
   
     /**
      *  Hash table that can look up xslt element IDs via name.
  
  
  
  1.25      +6 -5      xml-xalan/src/org/apache/xalan/xslt/StylesheetHandler.java
  
  Index: StylesheetHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/StylesheetHandler.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- StylesheetHandler.java	2000/02/24 21:11:02	1.24
  +++ StylesheetHandler.java	2000/03/02 10:23:07	1.25
  @@ -68,12 +68,13 @@
   import org.apache.xalan.xpath.xml.XSLMessages;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Initializes and processes a stylesheet via SAX events.
    * If you need to alter the code in here,
    * it is not for the faint-of-heart, due to the state tracking
    * that has to be done due to the SAX event model.
    */
  -public class StylesheetHandler implements DocumentHandler
  +class StylesheetHandler implements DocumentHandler
   {
     /**
      * The XSLT Processor for needed services.
  @@ -232,7 +233,7 @@
      * @param which The index into the attribute list (not used at this time).
      * @return True if this is a namespace name.
      */
  -  boolean isAttrOK(String attrName, AttributeList atts, int which)
  +  private boolean isAttrOK(String attrName, AttributeList atts, int which)
     {
       return m_stylesheet.isAttrOK(attrName, atts, which);
     }
  @@ -245,7 +246,7 @@
      * @param which The index of the attribute into the attribute list.
      * @return True if this is a xml:space attribute.
      */
  -  boolean processSpaceAttr(String aname, AttributeList atts, int which)
  +  private boolean processSpaceAttr(String aname, AttributeList atts, int which)
       throws SAXException
     {
       boolean isSpaceAttr = aname.equals("xml:space");
  @@ -1201,7 +1202,7 @@
     /**
      * Process xsl:import.
      */
  -  void processImport(String name, AttributeList atts)
  +  private void processImport(String name, AttributeList atts)
       throws SAXException
     {
       int nAttrs = atts.getLength();
  @@ -1300,7 +1301,7 @@
     /**
      * Process xsl:include.
      */
  -  void processInclude(String name, AttributeList atts)
  +  private void processInclude(String name, AttributeList atts)
       throws SAXException
     {
       int nAttrs = atts.getLength();
  
  
  
  1.31      +7 -1      xml-xalan/src/org/apache/xalan/xslt/StylesheetRoot.java
  
  Index: StylesheetRoot.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/StylesheetRoot.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- StylesheetRoot.java	2000/03/01 02:32:43	1.30
  +++ StylesheetRoot.java	2000/03/02 10:23:07	1.31
  @@ -70,6 +70,7 @@
   import org.apache.xml.serialize.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * Binary representation of a stylesheet -- use the {@link org.apache.xalan.xslt.XSLTProcessor} ProcessStylesheet
    * method to create a StylesheetRoot and improve performance for a stylesheet performing multiple transformations.
    * Also required for XSLTProcessor to function as SAX DocumentHandler.
  @@ -93,6 +94,7 @@
     String m_liaisonClassUsedToCreate = null;
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Read the stylesheet root from a serialization stream.
      */
     private void readObject(ObjectInputStream stream)
  @@ -187,6 +189,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Initialize the stylesheet.
      */
     protected void init(XSLTEngineImpl processor)
  @@ -464,7 +467,7 @@
      * serializers come up to speed.
      */
     public boolean m_useXercesSerializers = false;
  -
  +  
     /**
      * Creates a compatible SAX serializer for the specified writer
      * and output format. If the output format is missing, the default
  @@ -868,6 +871,7 @@
   
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * The default template to use for text nodes if we don't find
      * anything else.  This is initialized in initDefaultRule().
      * @serial
  @@ -875,6 +879,7 @@
     public ElemTemplate m_defaultTextRule;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * The default template to use if we don't find anything
      * else.  This is initialized in initDefaultRule().
      * @serial
  @@ -882,6 +887,7 @@
     public ElemTemplate m_defaultRule;
   
     /**
  +   * <meta name="usage" content="advanced"/>
      * The default template to use for the root if we don't find
      * anything else.  This is initialized in initDefaultRule().
      * We kind of need this because the defaultRule isn't good
  
  
  
  1.3       +24 -2     xml-xalan/src/org/apache/xalan/xslt/StylesheetSpec.java
  
  Index: StylesheetSpec.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/StylesheetSpec.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StylesheetSpec.java	2000/02/24 21:11:02	1.2
  +++ StylesheetSpec.java	2000/03/02 10:23:07	1.3
  @@ -56,6 +56,11 @@
    */
   package org.apache.xalan.xslt;
   
  +/**
  + * <meta name="usage" content="general"/>
  + * This class implements the representation of a stylesheet 
  + * specification via xml-stylesheet in an XML document.
  + */
   public class StylesheetSpec extends XSLTInputSource
   {
     String type; // CDATA #REQUIRED
  @@ -63,6 +68,9 @@
     String media; // CDATA #IMPLIED
     boolean alternate; // (yes|no) "no"
     
  +  /**
  +   * Create a StylesheetSpec object.
  +   */
     public StylesheetSpec(String href, String type, String title, 
                           String media, boolean alternate,
                           String encoding)
  @@ -74,11 +82,25 @@
       this.media = media;
       this.alternate = alternate;
     }
  -
  public String       getType()
  {
  +
  +  /**
  +   * Get the type of the stylesheet, i.e. "text/xsl".
  +   */
  public String       getType()
  {
       return type;
  }
  
  +  /**
  +   * Get the title of the element (in other words, the 
  +   * item to be presented to the user agent).
  +   */
     public String       getTitle()
  {
       return title;
  }
  
  +  /**
  +   * Get the media attribute of the stylesheet.
  +   */
     public String       getMedia()
  {
  -    return media;
  }

  public boolean    getIsAlternate()
  {
  +    return media;
  }
  +  /**
  +   * Get whether or not the stylesheet is specified as 
  +   * an alternate.
  +   */
  public boolean    getIsAlternate()
  {
       return alternate;
  }
   }
  
  
  
  1.3       +2 -1      xml-xalan/src/org/apache/xalan/xslt/TemplateElementContext.java
  
  Index: TemplateElementContext.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/TemplateElementContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TemplateElementContext.java	2000/02/22 02:19:14	1.2
  +++ TemplateElementContext.java	2000/03/02 10:23:07	1.3
  @@ -4,11 +4,12 @@
   import org.apache.xalan.xpath.xml.QName;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Object to hold information needed to call transformChild.  An instance 
    * of this object is passed to XPath, and then passed back to the 
    * processLocatedNode method.
    */
  -public class TemplateElementContext
  +class TemplateElementContext
   {
     /**
      * Construct an instance of TemplateElementContext.
  
  
  
  1.7       +13 -4     xml-xalan/src/org/apache/xalan/xslt/TemplateList.java
  
  Index: TemplateList.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/TemplateList.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TemplateList.java	2000/02/24 21:11:02	1.6
  +++ TemplateList.java	2000/03/02 10:23:08	1.7
  @@ -66,6 +66,7 @@
   import org.apache.xalan.xslt.res.XSLTErrorResources;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Encapsulates a template list, and helps locate individual templates.
    */
   public class TemplateList implements java.io.Serializable
  @@ -82,6 +83,14 @@
      * The stylesheet owner of the list.
      */
     Stylesheet m_stylesheet;
  +  
  +  /**
  +   * Get the stylesheet owner of the list.
  +   */
  +  public Stylesheet getStylesheet()
  +  {
  +    return m_stylesheet;
  +  }
   
     /**
      * The first template of the template children.
  @@ -149,7 +158,7 @@
      * Get if the stylesheet is without an xsl:stylesheet
      * and xsl:template wrapper.
      */
  -  boolean getIsWrapperless()
  +  public boolean getIsWrapperless()
     {
       return m_isWrapperless;
     }
  @@ -167,7 +176,7 @@
      * Get the manufactured template if there is no wrapper.
      * and xsl:template wrapper.
      */
  -  ElemTemplate getWrapperlessTemplate()
  +  public ElemTemplate getWrapperlessTemplate()
     {
       return m_wrapperlessTemplate;
     }
  @@ -402,7 +411,7 @@
     /**
      * Add object to vector if not already there.
      */
  -  void addObjectIfNotFound(Object obj, Vector v)
  +  private void addObjectIfNotFound(Object obj, Vector v)
     {
       int n = v.size();
       boolean addIt = true;
  @@ -483,7 +492,7 @@
           {
             String target = (String)strings.elementAt(stringIndex);
   
  -          Object newMatchPat = new MatchPattern2(template.m_matchPattern.m_currentPattern,
  +          Object newMatchPat = new MatchPattern2(template.m_matchPattern.getPatternString(),
                                                    template.m_matchPattern,
                                                    template, pos,
                                                    target, m_stylesheet);
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/TreeWalker2Result.java
  
  Index: TreeWalker2Result.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/TreeWalker2Result.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TreeWalker2Result.java	2000/02/22 03:47:40	1.2
  +++ TreeWalker2Result.java	2000/03/02 10:23:08	1.3
  @@ -6,6 +6,7 @@
   import org.xml.sax.*;
   
   /**
  + * <meta name="usage" content="internal"/>
    * Handle a walk of a tree, but screen out attributes for 
    * the result tree.
    */
  
  
  
  1.7       +2 -1      xml-xalan/src/org/apache/xalan/xslt/UnImplNode.java
  
  Index: UnImplNode.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/UnImplNode.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UnImplNode.java	2000/02/23 23:03:30	1.6
  +++ UnImplNode.java	2000/03/02 10:23:08	1.7
  @@ -61,9 +61,10 @@
   import org.apache.xalan.xpath.xml.XSLMessages;
   
   /**
  + * <meta name="usage" content="internal"/>
    * To be subclassed by classes that wish to fake being nodes.
    */
  -public class UnImplNode implements Element, NodeList
  +class UnImplNode implements Element, NodeList
   {
     UnImplNode()
     {
  
  
  
  1.4       +5 -0      xml-xalan/src/org/apache/xalan/xslt/VariableStack.java
  
  Index: VariableStack.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/VariableStack.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- VariableStack.java	2000/02/23 06:07:04	1.3
  +++ VariableStack.java	2000/03/02 10:23:08	1.4
  @@ -17,6 +17,7 @@
   
   
   /**
  + * <meta name="usage" content="internal"/>
    * Defines a class to keep track of a stack for
    * template arguments and variables, since we can't 
    * simply bind the variables to templates and walk 
  @@ -27,6 +28,10 @@
    * the given ElemTemplateElement instead of a qname. You 
    * can search past element frames, and they accumulate
    * until they are popped.
  + * 
  + * Note: Someone recently made the suggestion that the 
  + * globals should not be kept at the bottom of the stack, 
  + * but should be implemented in a hash table.
    */
   class VariableStack extends Stack
   {
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/XSLProcessorContext.java
  
  Index: XSLProcessorContext.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLProcessorContext.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XSLProcessorContext.java	2000/02/23 23:03:30	1.2
  +++ XSLProcessorContext.java	2000/03/02 10:23:08	1.3
  @@ -62,6 +62,7 @@
   // import org.apache.xalan.xslt.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * Captures processor context to be
    * passed to an extension element.
    *
  
  
  
  1.5       +20 -78    xml-xalan/src/org/apache/xalan/xslt/XSLProcessorException.java
  
  Index: XSLProcessorException.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLProcessorException.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XSLProcessorException.java	2000/02/24 21:11:03	1.4
  +++ XSLProcessorException.java	2000/03/02 10:23:09	1.5
  @@ -62,102 +62,44 @@
   import org.apache.xalan.xpath.XPathException;
   
   /**
  - * The exception used for most XSLT errors.  This should 
  - * probably not extend RuntimeException... this is done to 
  - * avoid painful exception declaration throughout the methods 
  - * execution.  Should I extend SAXException?
  + * <meta name="usage" content="general"/>
  + * The exception used for most XSLT errors.
    */
   public class XSLProcessorException extends XPathException
   {
  -  // Exception m_exception;
  -  
  +  /**
  +   * Create an XSLProcessorException object that holds 
  +   * an error message.
  +   * @param message The error message.
  +   */
     public XSLProcessorException(String message) 
     {
        super((null == message) ? XSLMessages.createMessage(XSLTErrorResources.ER_XSLT_ERROR, null) : message);
        m_exception = null;
     }
     
  +  /**
  +   * Create an XSLProcessorException object that holds 
  +   * an error message, and another exception 
  +   * that caused this exception.
  +   * @param message The error message.
  +   * @param e The exception that caused this exception.
  +   */
     public XSLProcessorException (String message, Exception e)
     {
       super((null == message) ? XSLMessages.createMessage(XSLTErrorResources.ER_XSLT_ERROR, null) : message);
       this.m_exception = e;
     }
     
  +  /**
  +   * Create an XSLProcessorException object that holds 
  +   * another exception that caused this exception.
  +   * @param e The exception that caused this exception.
  +   */
     public XSLProcessorException (Exception e)
     {
       super((null == e.getMessage()) ? XSLMessages.createMessage(XSLTErrorResources.ER_XSLT_ERROR, null) : e.getMessage());
       this.m_exception = e;
  -  }
  -  
  -  /*
  -  public void printStackTrace(java.io.PrintStream s) 
  -  {
  -    if(s == null)
  -      s = System.err;
  -    super.printStackTrace(s);
  -    Exception exception = m_exception;
  -    while(null != exception)
  -    {
  -      s.println("---------");
  -      exception.printStackTrace(s);
  -      if(exception instanceof SAXException)
  -      {
  -        SAXException se = (SAXException)exception;
  -        exception = se.getException();
  -      }
  -      else
  -      {
  -        exception = null;
  -      }
  -    }
  -  }
  -  
  -  public String getMessage()
  -  {
  -    return (null == super.getMessage()) ? XSLMessages.createMessage(XSLTErrorResources.ER_XSLT_ERROR, null) : super.getMessage();
     }
  -
  -  public void printStackTrace(java.io.PrintWriter s) 
  -  {
  -    if(s == null)
  -    {
  -      printStackTrace(System.out);
  -      return;
  -    }
  -    super.printStackTrace(s);
  -    Exception exception = m_exception;
  -    while(null != exception)
  -    {
  -      s.println("---------");
  -      if(exception.getMessage() != null)
  -      {
  -        exception.printStackTrace(s);
  -      }
  -      else if(!(exception instanceof SAXException))
  -      {
  -        exception.printStackTrace(s);
  -      }
  -      else
  -      {
  -        s.println(((Object)exception).getClass());
  -      }
  -      
  -      if(exception instanceof SAXException)
  -      {
  -        SAXException se = (SAXException)exception;
  -        exception = se.getException();
  -      }
  -      else if(exception instanceof XSLProcessorException)
  -      {
  -        XSLProcessorException xpe = (XSLProcessorException)exception;
  -        exception = xpe.m_exception;
  -      }
  -      else
  -      {
  -        exception = null;
  -      }
  -    }
  -  }
  -  */
  -  
  +    
   }
  
  
  
  1.9       +9 -0      xml-xalan/src/org/apache/xalan/xslt/XSLProcessorVersion.java
  
  Index: XSLProcessorVersion.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLProcessorVersion.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XSLProcessorVersion.java	2000/02/24 21:11:03	1.8
  +++ XSLProcessorVersion.java	2000/03/02 10:23:09	1.9
  @@ -57,12 +57,21 @@
   package org.apache.xalan.xslt;
   
   /**
  + * <meta name="usage" content="general"/>
    * Administrative class to keep track of the version number of
    * the Xalan release.
    * <P>See also: org/apache/xalan/xpath/xml/XSLTInfo.properties</P>
    */
   public class XSLProcessorVersion
   {
  +  /**
  +   * Print the processor version to the command line.
  +   */
  +  public static void main( String argv[] )
  +  {
  +    System.out.println(PRODUCT + " "+LANGUAGE+" Version "+S_VERSION);
  +  }
  +  
     /**
      * Version String like <CODE>"<B>Xalan</B>i v.r[.dd| <B>D</B>nn]"</CODE>.
      * <P>Semantics of the version string are identical to the Xerces project.</P>
  
  
  
  1.53      +42 -292   xml-xalan/src/org/apache/xalan/xslt/XSLTEngineImpl.java
  
  Index: XSLTEngineImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTEngineImpl.java,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- XSLTEngineImpl.java	2000/03/01 22:38:47	1.52
  +++ XSLTEngineImpl.java	2000/03/02 10:23:09	1.53
  @@ -86,6 +86,13 @@
    * The best way to perform transformations is to use the
    * {@link XSLTProcessor#process(XSLTInputSource, XSLTInputSource, XSLTResultTarget)} method,
    * but you may use any of process methods defined in XSLTEngineImpl.</p>
  + * 
  + * <p>Please note that this class is not safe per instance over multiple 
  + * threads.  If you are in a multithreaded environment, you should 
  + * keep a pool of these objects, or create a new one each time.  In a 
  + * multithreaded environment, the right way to do things is to create a 
  + * StylesheetRoot via processStylesheet, and then reuse this object 
  + * over multiple threads.</p>
    *
    * <p>If you reuse the processor instance, you should call reset() between transformations.</p>
    * @see XSLTProcessorFactory
  @@ -262,16 +269,6 @@
     final VariableStack getVarStack() { return m_variableStacks; }
   
     /**
  -   * If true, output carriage returns.
  -   */
  -  boolean m_outputCarriageReturns = false;
  -
  -  /**
  -   * If true, output linefeeds.
  -   */
  -  boolean m_outputLinefeeds = false;
  -
  -  /**
      * This is for use by multiple output documents, to determine
      * the base directory for the output document.  It needs to
      * be set by the caller.
  @@ -455,7 +452,12 @@
       m_parserLiaison.reset();
     }
     
  -  public StackGuard getStackGuard()
  +  /**
  +   * <meta name="usage" content="internal"/>
  +   * Get the object used to guard the stack from 
  +   * recursion.
  +   */
  +  StackGuard getStackGuard()
     {  
       return m_stackGuard;
     }  
  @@ -484,14 +486,14 @@
            && (!(sourceNode instanceof org.apache.xalan.xpath.xdom.XercesLiaison)))
           throw new SAXException("Can not mix DTM input with DOM output!");
         
  -      XMLParserLiaisonDefault newLiaison = new org.apache.xalan.xpath.xdom.XercesLiaison();
  +      XMLParserLiaison newLiaison = new org.apache.xalan.xpath.xdom.XercesLiaison();
         newLiaison.copyFromOtherLiaison((XMLParserLiaisonDefault)m_parserLiaison);
         setExecContext(newLiaison);
       }
       else if((null != sourceNode)&& (sourceNode instanceof org.apache.xerces.dom.NodeImpl) &&
          (m_parserLiaison instanceof org.apache.xalan.xpath.dtm.DTMLiaison))
       {
  -      XMLParserLiaisonDefault newLiaison = new org.apache.xalan.xpath.xdom.XercesLiaison();
  +      XMLParserLiaison newLiaison = new org.apache.xalan.xpath.xdom.XercesLiaison();
         newLiaison.copyFromOtherLiaison((XMLParserLiaisonDefault)m_parserLiaison);
         setExecContext(newLiaison);
       }
  @@ -747,6 +749,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Get the filename of the output document, if it was set.
      * This is for use by multiple output documents, to determine
      * the base directory for the output document.  It needs to
  @@ -758,6 +761,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Set the filename of the output document.
      * This is for use by multiple output documents, to determine
      * the base directory for the output document.  It needs to
  @@ -1321,18 +1325,6 @@
       return m_parserLiaison.extFunction(namespace, extensionName, argVec, methodKey);
     }
   
  -  /**
  -   * In response to xsl:function, set up a function that can
  -   * be called from the expression language.
  -   * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  -   * the error condition is severe enough to halt processing.
  -   */
  -  protected void handleFunctionsInstruction(Element extensionElem)
  -    throws SAXException
  -  {
  -    throw new XSLProcessorException ("xsl:functions is unsupported");
  -  }
  -
     //==========================================================
     // SECTION: Diagnostic functions
     //==========================================================
  @@ -1444,6 +1436,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Warn the user of an problem.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
      * the error condition is severe enough to halt processing.
  @@ -1455,6 +1448,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Warn the user of an problem.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
      * the error condition is severe enough to halt processing.
  @@ -1466,6 +1460,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Warn the user of an problem.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
      * the error condition is severe enough to halt processing.
  @@ -1477,6 +1472,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Warn the user of an problem.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
      * the error condition is severe enough to halt processing.
  @@ -1507,6 +1503,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  @@ -1538,6 +1535,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  @@ -1550,6 +1548,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  @@ -1562,6 +1561,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  @@ -1574,6 +1574,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  @@ -1610,7 +1611,8 @@
     }
   
     /**
  -   * Tell the user of an error, and probably throw an
  +    * <meta name="usage" content="internal"/>
  +  * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
      * the error condition is severe enough to halt processing.
  @@ -1622,6 +1624,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell the user of an error, and probably throw an
      * exception.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
  @@ -1657,7 +1660,7 @@
      * Mark the time, so that displayDuration can later
      * display the elapse.
      */
  -  public void pushTime(Object key)
  +  void pushTime(Object key)
     {
       if(null != key)
       {
  @@ -1669,7 +1672,7 @@
      * Returns the duration since pushTime was called,
      * in milliseconds.
      */
  -  public long popDuration(Object key)
  +  long popDuration(Object key)
     {
       long millisecondsDuration = 0;
       if(null != key)
  @@ -2081,6 +2084,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Write the children of a stylesheet element to the given listener.
      * @exception XSLProcessorException thrown if the active ProblemListener and XMLParserLiaison decide
      * the error condition is severe enough to halt processing.
  @@ -2448,214 +2452,13 @@
   
     } // end copyAttributesToTarget method
   
  -  /**
  -   * Translate CSS attributes on the output to a "style" attribute, for
  -   * old submission support.  You probably shouldn't rely on this, though
  -   * I personally like it a lot.
  -   * @param b If true, translate CSS attributes on the output to a
  -   * "style" attribute.
  -   * @deprecated
  -   */
  -  public void setTranslateCSS(boolean b)
  -  {
  -    m_translateCSS = b;
  -  }
  -
  -  /**
  -   * Translate CSS attributes and put them in a style tag.
  -   * @deprecated
  -   */
  -  /*
  -  void translateCSSAttrsToStyleAttr(MutableAttrListImpl attList)
  -  {
  -    if(m_translateCSS)
  -    {
  -      String styleAttrValueString = null;
  -      StringVector toBeRemoved = new StringVector();
  -      int nAttributes = attList.getLength();
  -      for(int i = 0; i < nAttributes; i++)
  -      {
  -        String attrName = attList.getName(i);
  -        if(isCSSAttribute(attrName))
  -        {
  -          toBeRemoved.addElement(attrName);
  -          if(null == styleAttrValueString)
  -          {
  -            styleAttrValueString = attrName+":"+attList.getValue(i);
  -          }
  -          else
  -          {
  -            styleAttrValueString += "; "+attrName+":"+attList.getValue(i);
  -          }
  -        }
  -      }
  -      int nAttrsToRemove = toBeRemoved.size();
  -      for(int i = 0; i < nAttrsToRemove; i++)
  -      {
  -        attList.removeAttribute(toBeRemoved.elementAt(i));
  -      }
  -      if(null != styleAttrValueString)
  -      {
  -        addResultAttribute(attList, "style", styleAttrValueString);
  -      }
  -    }
  -  }
  -  */
  -
  -  /**
  -   * Returns whether or not an attribute key
  -   * is a CSS2 attribute.
  -   * @deprecated
  -   */
  -  /*
  -  protected boolean isCSSAttribute(String name)
  -  {
  -    if(null == m_cssKeys)
  -    {
  -      m_cssKeys = new Hashtable();
  -      initCSS2Table();
  -    }
  -    return (null != m_cssKeys.get(name));
  -  }
  -  */
   
  -  /**
  -   * Stuff a hash table with CSS2 keys & dummy values
  -   * in order to quickly look up if a template child
  -   * attribute is a CSS attribute or not.
  -   * Note: This has something in it to screw up the
  -   * Dev Studio code format command, so that the
  -   * last curly bracket goes all the way to the
  -   * left.
  -   * @deprecated
  -   */
  -  /*
  -  protected void initCSS2Table()
  -  {
  -    Integer dummyVal = new Integer(1);
  -
  -    m_cssKeys.put("azimuth", dummyVal);
  -    m_cssKeys.put("background", dummyVal);
  -    m_cssKeys.put("background-attachment", dummyVal);
  -    m_cssKeys.put("background-color", dummyVal);
  -    m_cssKeys.put("background-image", dummyVal);
  -    m_cssKeys.put("background-position", dummyVal);
  -    m_cssKeys.put("background-repeat", dummyVal);
  -    m_cssKeys.put("border", dummyVal);
  -    m_cssKeys.put("border-bottom", dummyVal);
  -    m_cssKeys.put("border-bottom-color", dummyVal);
  -    m_cssKeys.put("border-bottom-style", dummyVal);
  -    m_cssKeys.put("border-bottom-width", dummyVal);
  -    m_cssKeys.put("border-color", dummyVal);
  -    m_cssKeys.put("border-left", dummyVal);
  -    m_cssKeys.put("border-left-color", dummyVal);
  -    m_cssKeys.put("border-left-style", dummyVal);
  -    m_cssKeys.put("border-left-width", dummyVal);
  -    m_cssKeys.put("border-right", dummyVal);
  -    m_cssKeys.put("border-right-color", dummyVal);
  -    m_cssKeys.put("border-right-style", dummyVal);
  -    m_cssKeys.put("border-right-width", dummyVal);
  -    m_cssKeys.put("border-spacing", dummyVal);
  -    m_cssKeys.put("border-style", dummyVal);
  -    m_cssKeys.put("border-top", dummyVal);
  -    m_cssKeys.put("border-top-color", dummyVal);
  -    m_cssKeys.put("border-top-style", dummyVal);
  -    m_cssKeys.put("border-top-width", dummyVal);
  -    m_cssKeys.put("border-width", dummyVal);
  -    m_cssKeys.put("bottom", dummyVal);
  -    m_cssKeys.put("caption-side", dummyVal);
  -    m_cssKeys.put("clear", dummyVal);
  -    m_cssKeys.put("clip", dummyVal);
  -    m_cssKeys.put("color", dummyVal);
  -    m_cssKeys.put("column-span", dummyVal);
  -    m_cssKeys.put("content", dummyVal);
  -    m_cssKeys.put("cue", dummyVal);
  -    m_cssKeys.put("cue-after", dummyVal);
  -    m_cssKeys.put("cue-before", dummyVal);
  -    m_cssKeys.put("cursor", dummyVal);
  -    m_cssKeys.put("direction", dummyVal);
  -    m_cssKeys.put("display", dummyVal);
  -    m_cssKeys.put("elevation", dummyVal);
  -    m_cssKeys.put("float", dummyVal);
  -    m_cssKeys.put("font", dummyVal);
  -    m_cssKeys.put("font-family", dummyVal);
  -    m_cssKeys.put("font-size", dummyVal);
  -    m_cssKeys.put("font-size-adjust", dummyVal);
  -    m_cssKeys.put("font-style", dummyVal);
  -    m_cssKeys.put("font-variant", dummyVal);
  -    m_cssKeys.put("font-weight", dummyVal);
  -    m_cssKeys.put("height", dummyVal);
  -    m_cssKeys.put("left", dummyVal);
  -    m_cssKeys.put("letter-spacing", dummyVal);
  -    m_cssKeys.put("line-height", dummyVal);
  -    m_cssKeys.put("list-style", dummyVal);
  -    m_cssKeys.put("list-style-image", dummyVal);
  -    m_cssKeys.put("list-style-position", dummyVal);
  -    m_cssKeys.put("list-style-type", dummyVal);
  -    m_cssKeys.put("margin", dummyVal);
  -    m_cssKeys.put("margin-bottom", dummyVal);
  -    m_cssKeys.put("margin-left", dummyVal);
  -    m_cssKeys.put("margin-right", dummyVal);
  -    m_cssKeys.put("margin-top", dummyVal);
  -    m_cssKeys.put("marks", dummyVal);
  -    m_cssKeys.put("max-height", dummyVal);
  -    m_cssKeys.put("max-width", dummyVal);
  -    m_cssKeys.put("min-height", dummyVal);
  -    m_cssKeys.put("min-width", dummyVal);
  -    m_cssKeys.put("orphans", dummyVal);
  -    m_cssKeys.put("overflow", dummyVal);
  -    m_cssKeys.put("padding", dummyVal);
  -    m_cssKeys.put("padding-bottom", dummyVal);
  -    m_cssKeys.put("padding-left", dummyVal);
  -    m_cssKeys.put("padding-right", dummyVal);
  -    m_cssKeys.put("padding-top", dummyVal);
  -    m_cssKeys.put("page-break-after", dummyVal);
  -    m_cssKeys.put("page-break-before", dummyVal);
  -    m_cssKeys.put("pause", dummyVal);
  -    m_cssKeys.put("pause-after", dummyVal);
  -    m_cssKeys.put("pause-before", dummyVal);
  -    m_cssKeys.put("pitch", dummyVal);
  -    m_cssKeys.put("pitch-range", dummyVal);
  -    m_cssKeys.put("play-during", dummyVal);
  -    m_cssKeys.put("position", dummyVal);
  -    m_cssKeys.put("quotes", dummyVal);
  -    m_cssKeys.put("richness", dummyVal);
  -    m_cssKeys.put("right", dummyVal);
  -    m_cssKeys.put("row-span", dummyVal);
  -    m_cssKeys.put("size", dummyVal);
  -    m_cssKeys.put("speak", dummyVal);
  -    m_cssKeys.put("speak-date", dummyVal);
  -    m_cssKeys.put("speak-header", dummyVal);
  -    m_cssKeys.put("speak-numeral", dummyVal);
  -    m_cssKeys.put("speak-punctuation", dummyVal);
  -    m_cssKeys.put("speak-time", dummyVal);
  -    m_cssKeys.put("speech-rate", dummyVal);
  -    m_cssKeys.put("stress", dummyVal);
  -    m_cssKeys.put("table-layout", dummyVal);
  -    m_cssKeys.put("text-align", dummyVal);
  -    m_cssKeys.put("text-decoration", dummyVal);
  -    m_cssKeys.put("text-indent", dummyVal);
  -    m_cssKeys.put("text-shadow", dummyVal);
  -    m_cssKeys.put("text-transform", dummyVal);
  -    m_cssKeys.put("top", dummyVal);
  -    m_cssKeys.put("unicode-bidi", dummyVal);
  -    m_cssKeys.put("vertical-align", dummyVal);
  -    m_cssKeys.put("visibility", dummyVal);
  -    m_cssKeys.put("voice-family", dummyVal);
  -    m_cssKeys.put("volume", dummyVal);
  -    m_cssKeys.put("white-space", dummyVal);
  -    m_cssKeys.put("widows", dummyVal);
  -    m_cssKeys.put("width", dummyVal);
  -    m_cssKeys.put("word-spacing", dummyVal);
  -    m_cssKeys.put("z-index", dummyVal);
  -  }
  -  */
  -
     //==========================================================
     // SECTION: Functions for controling whitespace
     //==========================================================
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tells, through the combination of the default-space attribute
      * on xsl:stylesheet, xsl:strip-space, xsl:preserve-space, and the
      * xml:space attribute, whether or not extra whitespace should be stripped
  @@ -2777,7 +2580,7 @@
      * @param   ch      Character to check as XML whitespace.
      * @return          =true if <var>ch</var> is XML whitespace; otherwise =false.
      */
  -  public static boolean isSpace(char ch)
  +  static boolean isSpace(char ch)
     {
       return (ch == 0x20) || (ch == 0x09) || (ch == 0xD) || (ch == 0xA);
     }
  @@ -2787,7 +2590,7 @@
      * @param   string      String to be tested.
      * @return true if the string is all whitespace, false otherwise
      */
  -  public boolean isWhiteSpace(String string)
  +  boolean isWhiteSpace(String string)
     {
       final int len = string.length();
   
  @@ -2816,7 +2619,7 @@
      * @param   doublePunctuationSpaces    Use double spaces for punctuation?
      * @return              The trimmed string.
      */
  -  public String fixWhiteSpace(String string,
  +  String fixWhiteSpace(String string,
                                 boolean trimHead,
                                 boolean trimTail,
                                 boolean doublePunctuationSpaces)
  @@ -2945,29 +2748,10 @@
         }
       }
       return e-s;
  -  }
  -
  -  /**
  -   * Control if carriage returns are put in the result tree.
  -   * Default is to output carriage returns.
  -   * @param b If true, output carriage returns.
  -   */
  -  public void setOutputCarriageReturns(boolean b)
  -  {
  -    m_outputCarriageReturns = b;
  -  }
  -
  -  /**
  -   * Control if linefeeds are put in the result tree.
  -   * Default is to output linefeeds.
  -   * @param b If true, output linefeeds.
  -   */
  -  public void setOutputLinefeeds(boolean b)
  -  {
  -    m_outputLinefeeds = b;
     }
  -
  +  
     /**
  +   * <meta name="usage" content="internal"/>
      * Normalize the linefeeds and/or carriage returns to
      * be consistently 0x0D 0x0A.  This should almost
      * certainly be done somewhere else... like in the
  @@ -2975,43 +2759,8 @@
      */
     String getNormalizedText(Text tx)
     {
  -    if(!m_outputCarriageReturns && !m_outputLinefeeds)
  -    {
  -      return tx.getData();
  -    }
  -
  -    String src = tx.getData();
  -    int nSrcChars = src.length();
  -    StringBuffer sb = new StringBuffer(nSrcChars + 8);
  -    char prevChar = 0x00;
  -    for(int i = 0; i < nSrcChars; i++)
  -    {
  -      char c = src.charAt(i);
  -      if(0x0A == c)
  -      {
  -        if(0x0D != prevChar)
  -        {
  -          if(m_outputCarriageReturns)
  -            sb.append((char)0x0D);
  -          if(m_outputLinefeeds)
  -            sb.append((char)0x0A);
  -        }
  -      }
  -      else if(0x0D == c)
  -      {
  -        if(m_outputCarriageReturns)
  -          sb.append((char)0x0D);
  -        if(m_outputLinefeeds)
  -          sb.append((char)0x0A);
  -      }
  -      else
  -      {
  -        sb.append(c);
  -      }
  -      prevChar = c;
  -    }
  -
  -    return (sb.length() > 0) ? sb.toString() : null;
  +    // Hope the Text node implementation normalizes stuff.
  +    return tx.getData();
     }
   
     //==========================================================
  @@ -3520,7 +3269,7 @@
       
       // Force a XercesLiaison for right now, since we can't 
       // do the DTM with SAX right now.
  -    XMLParserLiaisonDefault liaison = new org.apache.xalan.xpath.xdom.XercesLiaison(errHandler);
  +    XMLParserLiaison liaison = new org.apache.xalan.xpath.xdom.XercesLiaison(errHandler);
       liaison.copyFromOtherLiaison((XMLParserLiaisonDefault)m_parserLiaison);
       setExecContext(liaison);
       
  @@ -3797,6 +3546,7 @@
     }
   
     /**
  +   * <meta name="usage" content="internal"/>
      * Tell if the default namespace is listed in the pending
      * attributes.  *Only* for use to see if the HTML element should
      * be used to indicate a switch to the HTML formatter.
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xslt/XSLTInputSource.java
  
  Index: XSLTInputSource.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTInputSource.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- XSLTInputSource.java	2000/02/24 21:11:04	1.3
  +++ XSLTInputSource.java	2000/03/02 10:23:09	1.4
  @@ -62,6 +62,7 @@
   import java.io.Reader;
   
   /**
  + * <meta name="usage" content="general"/>
    * Represents an XML source document or XSL stylesheet.
    * Use XSLTInputSource objects to provide input to the XSLTProcessor process() method
    * for a transformation. This class extends the SAX input source to handle
  
  
  
  1.12      +1 -0      xml-xalan/src/org/apache/xalan/xslt/XSLTProcessor.java
  
  Index: XSLTProcessor.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTProcessor.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XSLTProcessor.java	2000/02/25 19:08:39	1.11
  +++ XSLTProcessor.java	2000/03/02 10:23:09	1.12
  @@ -77,6 +77,7 @@
   import org.apache.xml.serialize.OutputFormat;
   
   /**
  + * <meta name="usage" content="general"/>
    * The transformation processor -- use {@link org.apache.xalan.xslt.XSLTProcessorFactory} to instantiate an implementation of this interface.
    * It's the responsibility of the implementation (XSLTEngineImpl),
    * collaborating with a XMLParserLiaison, the DOM,
  
  
  
  1.5       +1 -0      xml-xalan/src/org/apache/xalan/xslt/XSLTProcessorFactory.java
  
  Index: XSLTProcessorFactory.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTProcessorFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XSLTProcessorFactory.java	2000/02/24 21:11:04	1.4
  +++ XSLTProcessorFactory.java	2000/03/02 10:23:09	1.5
  @@ -60,6 +60,7 @@
   import org.apache.xalan.xpath.XPathFactory;
   
   /**
  + * <meta name="usage" content="general"/>
    * Manufactures the processor for performing transformations. Use one of the static getProcessor methods
    * to create an XSLTProcessor object.
    */
  
  
  
  1.5       +11 -10    xml-xalan/src/org/apache/xalan/xslt/XSLTResultTarget.java
  
  Index: XSLTResultTarget.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/XSLTResultTarget.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- XSLTResultTarget.java	2000/02/24 21:11:04	1.4
  +++ XSLTResultTarget.java	2000/03/02 10:23:10	1.5
  @@ -62,16 +62,17 @@
   import org.xml.sax.DocumentHandler;
   
   /**
  -  * Contains the result of a transformation that you perform with the
  -  * XSLTProcessor process() method or one of the StylesheetRoot process() methods.
  -  * Create an instance of this class to provide the process() method a container
  -  * for the transformation result tree.
  -  * You can use a file name or URL, character stream, byte stream, DOM Node, or SAX DocumentHandler
  -  * to instantiate an XSLTResultTarget object.
  -  *
  -  * @see XSLTProcessor#process(XSLTInputSource, XSLTInputSource, XSLTResultTarget)
  -  * @see StylesheetRoot
  -  */
  + * <meta name="usage" content="general"/>
  + * Contains the result of a transformation that you perform with the
  + * XSLTProcessor process() method or one of the StylesheetRoot process() methods.
  + * Create an instance of this class to provide the process() method a container
  + * for the transformation result tree.
  + * You can use a file name or URL, character stream, byte stream, DOM Node, or SAX DocumentHandler
  + * to instantiate an XSLTResultTarget object.
  + *
  + * @see XSLTProcessor#process(XSLTInputSource, XSLTInputSource, XSLTResultTarget)
  + * @see StylesheetRoot
  + */
   public class XSLTResultTarget
   {
     /**
  
  
  
  1.12      +1 -0      xml-xalan/src/org/apache/xalan/xslt/client/XSLTProcessorApplet.java
  
  Index: XSLTProcessorApplet.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/client/XSLTProcessorApplet.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- XSLTProcessorApplet.java	2000/02/29 13:52:03	1.11
  +++ XSLTProcessorApplet.java	2000/03/02 10:23:25	1.12
  @@ -68,6 +68,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="general"/>
    * Provides applet host for the XSLT processor. To perform transformations on an HTML client:
    * <ol>
    * <li>Use an &lt;applet&gt; tag to embed this applet in the HTML client.</li>
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/trace/GenerateEvent.java
  
  Index: GenerateEvent.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/trace/GenerateEvent.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- GenerateEvent.java	2000/02/25 16:12:29	1.2
  +++ GenerateEvent.java	2000/03/02 10:23:25	1.3
  @@ -62,6 +62,7 @@
   import org.apache.xalan.xslt.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Event generated by the XSL processor after it generates a new node in the result tree.
    * This event responds to and is modeled on the SAX events that are sent to the
    * formatter listener FormatterToXXX)classes.
  
  
  
  1.6       +4 -3      xml-xalan/src/org/apache/xalan/xslt/trace/PrintTraceListener.java
  
  Index: PrintTraceListener.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/trace/PrintTraceListener.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PrintTraceListener.java	2000/02/29 23:17:43	1.5
  +++ PrintTraceListener.java	2000/03/02 10:23:26	1.6
  @@ -62,6 +62,7 @@
   import org.apache.xalan.xslt.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Implementation of the TraceListener interface that
    * prints each event to standard out as it occurs.
    *
  @@ -131,7 +132,7 @@
                              et.m_elemName+" ");
           if(null != et.m_matchPattern)
           {
  -          m_pw.print("match='"+et.m_matchPattern.m_currentPattern+"' ");
  +          m_pw.print("match='"+et.m_matchPattern.getPatternString()+"' ");
           }
           if(null != et.m_name)
           {
  @@ -179,13 +180,13 @@
           {
             m_pw.print("(default rule) ");
           }
  -        m_pw.print(ete.m_elemName+", "+ev.m_attributeName+"='"+ev.m_xpath.m_currentPattern+"': ");
  +        m_pw.print(ete.m_elemName+", "+ev.m_attributeName+"='"+ev.m_xpath.getPatternString()+"': ");
         }
         else
         {
           m_pw.print("Line #"+ev.m_styleNode.m_lineNumber+", "+
                            "Column #"+ev.m_styleNode.m_columnNumber+": "+
  -                         ete.m_elemName+", "+ev.m_attributeName+"='"+ev.m_xpath.m_currentPattern+"': ");
  +                         ete.m_elemName+", "+ev.m_attributeName+"='"+ev.m_xpath.getPatternString()+"': ");
         }
         if(ev.m_selection.getType() == ev.m_selection.CLASS_NODESET)
         {
  
  
  
  1.3       +1 -1      xml-xalan/src/org/apache/xalan/xslt/trace/SelectionEvent.java
  
  Index: SelectionEvent.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/trace/SelectionEvent.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SelectionEvent.java	2000/02/25 16:12:29	1.2
  +++ SelectionEvent.java	2000/03/02 10:23:26	1.3
  @@ -63,8 +63,8 @@
   import org.apache.xalan.xpath.XObject;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Event triggered by selection of a node in the style stree.
  - *
    */
   public class SelectionEvent implements java.util.EventListener
   {
  
  
  
  1.4       +1 -0      xml-xalan/src/org/apache/xalan/xslt/trace/TraceListener.java
  
  Index: TraceListener.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/trace/TraceListener.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TraceListener.java	2000/02/25 16:12:29	1.3
  +++ TraceListener.java	2000/03/02 10:23:26	1.4
  @@ -59,6 +59,7 @@
   import org.w3c.dom.*;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Interface the XSL processor calls when it matches a source node, selects a set of source nodes,
    * or generates a result node.
    * If you want an object instance to be called when a trace event occurs, use the XSLTEngineImpl setTraceListener method.
  
  
  
  1.3       +1 -0      xml-xalan/src/org/apache/xalan/xslt/trace/TracerEvent.java
  
  Index: TracerEvent.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/src/org/apache/xalan/xslt/trace/TracerEvent.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TracerEvent.java	2000/02/25 16:12:29	1.2
  +++ TracerEvent.java	2000/03/02 10:23:26	1.3
  @@ -61,6 +61,7 @@
   import org.apache.xalan.xpath.xml.QName;
   
   /**
  + * <meta name="usage" content="advanced"/>
    * Parent class of events generated for tracing the
    * progress of the XSL processor.
    */