diff --git a/src/org/apache/xalan/processor/ProcessorImport.java b/src/org/apache/xalan/processor/ProcessorImport.java
index d5fb1b7..deed51e 100644
--- a/src/org/apache/xalan/processor/ProcessorImport.java
+++ b/src/org/apache/xalan/processor/ProcessorImport.java
@@ -100,7 +100,7 @@
    *
    * @return the appropriate error number
    */
-  protected int getStylesheetInclErr()
+  protected String getStylesheetInclErr()
   {
     return XSLTErrorResources.ER_IMPORTING_ITSELF;
   }
diff --git a/src/org/apache/xalan/processor/ProcessorInclude.java b/src/org/apache/xalan/processor/ProcessorInclude.java
index 53fea29..24932f9 100644
--- a/src/org/apache/xalan/processor/ProcessorInclude.java
+++ b/src/org/apache/xalan/processor/ProcessorInclude.java
@@ -136,7 +136,7 @@
    *
    * @return the appropriate error number
    */
-  protected int getStylesheetInclErr()
+  protected String getStylesheetInclErr()
   {
     return XSLTErrorResources.ER_STYLESHEET_INCLUDES_ITSELF;
   }
diff --git a/src/org/apache/xalan/processor/StylesheetHandler.java b/src/org/apache/xalan/processor/StylesheetHandler.java
index 9b39428..0cc5895 100644
--- a/src/org/apache/xalan/processor/StylesheetHandler.java
+++ b/src/org/apache/xalan/processor/StylesheetHandler.java
@@ -883,7 +883,7 @@
    * <meta name="usage" content="internal"/>
    * Warn the user of an problem.
    *
-   * @param msg An index into the {@link org.apache.xalan.res.XSLTErrorResources}
+   * @param msg An key into the {@link org.apache.xalan.res.XSLTErrorResources}
    * table, that is one of the WG_ prefixed definitions.
    * @param args An array of arguments for the given warning.
    *
@@ -892,7 +892,7 @@
    * {@link javax.xml.transform.ErrorListener#warning}
    * method chooses to flag this condition as an error.
    */
-  public void warn(int msg, Object args[]) throws org.xml.sax.SAXException
+  public void warn(String msg, Object args[]) throws org.xml.sax.SAXException
   {
 
     String formattedMsg = m_XSLMessages.createWarning(msg, args);
@@ -975,7 +975,7 @@
    * Tell the user of an error, and probably throw an
    * exception.
    *
-   * @param msg An index into the {@link org.apache.xalan.res.XSLTErrorResources}
+   * @param msg A key into the {@link org.apache.xalan.res.XSLTErrorResources}
    * table, that is one of the WG_ prefixed definitions.
    * @param args An array of arguments for the given warning.
    * @param e An error which the SAXException should wrap.
@@ -985,7 +985,7 @@
    * {@link javax.xml.transform.ErrorListener#error}
    * method chooses to flag this condition as an error.
    */
-  protected void error(int msg, Object args[], Exception e)
+  protected void error(String msg, Object args[], Exception e)
           throws org.xml.sax.SAXException
   {
 
diff --git a/src/org/apache/xalan/processor/XSLTAttributeDef.java b/src/org/apache/xalan/processor/XSLTAttributeDef.java
index 18cac4f..2d3d4bf 100644
--- a/src/org/apache/xalan/processor/XSLTAttributeDef.java
+++ b/src/org/apache/xalan/processor/XSLTAttributeDef.java
@@ -1637,7 +1637,7 @@
     return true;
   }
   
-  private void handleError(StylesheetHandler handler, int msg, Object [] args, Exception exc) throws org.xml.sax.SAXException
+  private void handleError(StylesheetHandler handler, String msg, Object [] args, Exception exc) throws org.xml.sax.SAXException
   {
     switch (getErrorType()) 
     {
diff --git a/src/org/apache/xalan/res/XSLMessages.java b/src/org/apache/xalan/res/XSLMessages.java
index a68e49d..b69e654 100644
--- a/src/org/apache/xalan/res/XSLMessages.java
+++ b/src/org/apache/xalan/res/XSLMessages.java
@@ -2,7 +2,7 @@
  * The Apache Software License, Version 1.1
  *
  *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,7 +10,7 @@
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
+ *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
@@ -18,7 +18,7 @@
  *    distribution.
  *
  * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:  
+ *    if any, must include the following acknowledgment:
  *       "This product includes software developed by the
  *        Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself,
@@ -26,7 +26,7 @@
  *
  * 4. The names "Xalan" and "Apache Software Foundation" must
  *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written 
+ *    software without prior written permission. For written
  *    permission, please contact apache@apache.org.
  *
  * 5. Products derived from this software may not be called "Apache",
@@ -56,6 +56,7 @@
  */
 package org.apache.xalan.res;
 
+
 import java.util.Locale;
 import java.util.ResourceBundle;
 import java.util.ListResourceBundle;
@@ -75,10 +76,10 @@
   private Locale fLocale = Locale.getDefault();
 
   /** The language specific resource object for Xalan messages.  */
-  private static ResourceBundle XSLTBundle = null;
+  private static ListResourceBundle XSLTBundle = null;
 
   /** The language specific resource object for XPath messages.  */
-  private static ResourceBundle XPATHBundle = null;
+  private static ListResourceBundle XPATHBundle = null;
 
   /** The class name of the Xalan error message string table.    */
   private static final String XSLT_ERROR_RESOURCES =
@@ -96,7 +97,7 @@
 
   /**
    * Set the Locale object to use.
-   * 
+   *
    * @param locale non-null reference to Locale object.
    */
    public void setLocale(Locale locale)
@@ -106,7 +107,7 @@
 
   /**
    * Get the Locale object that is being used.
-   * 
+   *
    * @return non-null reference to Locale object.
    */
   public Locale getLocale()
@@ -118,31 +119,28 @@
    * Creates a message from the specified key and replacement
    * arguments, localized to the given locale.
    *
-   * @param errorCode The key for the message text.
+   * @param msgKey The key for the message text.
    * @param args      The arguments to be used as replacement text
    *                  in the message created.
    *
    * @return The formatted warning string.
    */
-  public static final String createXPATHWarning(int errorCode, Object args[])  //throws Exception 
+  public static final String createXPATHWarning(String msgKey, Object args[])  //throws Exception
   {
 
     if (XPATHBundle == null)
-      XPATHBundle =
-        loadResourceBundle(XPATH_ERROR_RESOURCES);
+      XPATHBundle =  loadResourceBundle(XPATH_ERROR_RESOURCES);
 
-    ResourceBundle fResourceBundle = XPATHBundle;
 
-    if (fResourceBundle != null)
+    if (XPATHBundle != null)
     {
-      String msgKey = XPATHErrorResources.getWarningKey(errorCode);
-
-      return createXPATHMsg(fResourceBundle, msgKey, args);
+      return createXPATHMsg(XPATHBundle, 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.
@@ -153,52 +151,20 @@
    *
    * @return The formatted message string.
    */
-  public static final String createXPATHMessage(int errorCode, Object args[])  //throws Exception 
+  public static final String createXPATHMessage(String msgKey, Object args[])  //throws Exception
   {
 
     if (XPATHBundle == null)
-      XPATHBundle =
-        loadResourceBundle(XPATH_ERROR_RESOURCES);
+      XPATHBundle =  loadResourceBundle(XPATH_ERROR_RESOURCES);
 
-    ResourceBundle fResourceBundle = XPATHBundle;
 
-    if (fResourceBundle != null)
+    if (XPATHBundle != null)
     {
-      String msgKey = XPATHErrorResources.getMessageKey(errorCode);
-
-      return createXPATHMsg(fResourceBundle, msgKey, args);
+      return createXPATHMsg(XPATHBundle, 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.
-   *
-   * @return The formatted message string.
-   */
-  public static final String createXPATHMessage(String msgKey, Object args[])  //throws Exception 
-  {
-
-    if (XPATHBundle == null)
-      XPATHBundle =
-        loadResourceBundle(XPATH_ERROR_RESOURCES);
-
-    ResourceBundle fResourceBundle = XPATHBundle;
-
-    if (fResourceBundle != null)
-    {
-      return createXPATHMsg(fResourceBundle, msgKey, args);
-    }
-    else
-      return "Could not load any resource bundles.";
-  }
-
 
   /**
    * Creates a message from the specified key and replacement
@@ -213,8 +179,8 @@
    *
    * @return The formatted message string.
    */
-  public static final String createXPATHMsg(ResourceBundle fResourceBundle,
-                                            String msgKey, Object args[])  //throws Exception 
+  public static final String createXPATHMsg(ListResourceBundle fResourceBundle,
+                                            String msgKey, Object args[])  //throws Exception
   {
 
     String fmsg = null;
@@ -222,11 +188,11 @@
     String msg = null;
 
     if (msgKey != null)
-      msg = fResourceBundle.getString(msgKey);
+      msg = fResourceBundle.getString( msgKey); 
 
     if (msg == null)
     {
-      msg = fResourceBundle.getString(XPATHErrorResources.BAD_CODE);
+      msg = fResourceBundle.getString( XPATHErrorResources.BAD_CODE);
       throwex = true;
     }
 
@@ -273,22 +239,18 @@
    * @param args      The arguments to be used as replacement text
    *                  in the message created.
    *
-   * @return The formatted warning string.
+   * @return The formatted message string.
    */
-  public static final String createWarning(int errorCode, Object args[])  //throws Exception 
+  public static final String createMessage(String msgKey, Object args[])  //throws Exception
   {
 
     if (XSLTBundle == null)
-      XSLTBundle =
-        loadResourceBundle(XSLT_ERROR_RESOURCES);
+      XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES);
 
-    ResourceBundle fResourceBundle = XSLTBundle;
 
-    if (fResourceBundle != null)
+    if (XSLTBundle != null)
     {
-      String msgKey = XSLTErrorResources.getWarningKey(errorCode);
-
-      return createMsg(fResourceBundle, msgKey, args);
+      return createMsg(XSLTBundle, msgKey, args);
     }
     else
       return "Could not load any resource bundles.";
@@ -298,57 +260,27 @@
    * Creates a message from the specified key and replacement
    * arguments, localized to the given locale.
    *
-   * @param errorCode The key for the message text.
+   * @param msgKey    The key for the message text.
    * @param args      The arguments to be used as replacement text
    *                  in the message created.
    *
-   * @return The formatted message string.
+   * @return The formatted warning string.
    */
-  public static final String createMessage(String msgKey, Object args[])  //throws Exception 
+  public static final String createWarning(String msgKey, Object args[])  //throws Exception
   {
 
     if (XSLTBundle == null)
-      XSLTBundle =
-        loadResourceBundle(XSLT_ERROR_RESOURCES);
+      XSLTBundle = loadResourceBundle(XSLT_ERROR_RESOURCES);
 
-    ResourceBundle fResourceBundle = XSLTBundle;
 
-    if (fResourceBundle != null)
+    if (XSLTBundle != null)
     {
-      return createMsg(fResourceBundle, msgKey, args);
+      return createMsg(XSLTBundle, 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.
-   *
-   * @return The formatted message string.
-   */
-  public static final String createMessage(int errorCode, Object args[])  //throws Exception 
-  {
-
-    if (XSLTBundle == null)
-      XSLTBundle =
-        loadResourceBundle(XSLT_ERROR_RESOURCES);
-
-    ResourceBundle fResourceBundle = XSLTBundle;
-
-    if (fResourceBundle != null)
-    {
-      String msgKey = XSLTErrorResources.getMessageKey(errorCode);
-
-      return createMsg(fResourceBundle, msgKey, args);
-    }
-    else
-      return "Could not load any resource bundles.";
-  }
 
   /**
    * Creates a message from the specified key and replacement
@@ -363,8 +295,8 @@
    *
    * @return The formatted message string.
    */
-  public static final String createMsg(ResourceBundle fResourceBundle,
-                                       String msgKey, Object args[])  //throws Exception 
+  public static final String createMsg(ListResourceBundle fResourceBundle,
+	String msgKey, Object args[])  //throws Exception
   {
 
     String fmsg = null;
@@ -372,7 +304,7 @@
     String msg = null;
 
     if (msgKey != null)
-      msg = fResourceBundle.getString(msgKey);
+      msg = fResourceBundle.getString( msgKey);
 
     if (msg == null)
     {
@@ -415,78 +347,6 @@
     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.
-   *
-   * @return The formatted message string.
-   *
-   * @throws Exception if the message can not be loaded.
-   */
-  public String createMessage(String bundleName, int errorCode, Object args[])
-          throws Exception
-  {
-
-    boolean throwex = false;
-    int majorCode;
-    int minorCode;
-    String fmsg = null;
-    ResourceBundle aResourceBundle = null;
-
-    aResourceBundle = loadResourceBundle(bundleName);
-
-    String msgKey = XSLTErrorResources.getMessageKey(errorCode);
-    String msg = null;
-
-    if (msgKey != null)
-      msg = aResourceBundle.getString(msgKey);
-
-    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;
-      }
-    }
-    else
-      fmsg = msg;
-
-    if (throwex)
-    {
-      throw new RuntimeException(fmsg);
-    }
-
-    return fmsg;
-  }
 
   /**
    * Return a named ResourceBundle for a particular locale.  This method mimics the behavior
@@ -499,19 +359,19 @@
    * @return the ResourceBundle
    * @throws MissingResourceException
    */
-  public static final ResourceBundle loadResourceBundle(String className)
+  public static final ListResourceBundle loadResourceBundle(String className)
           throws MissingResourceException
   {
 
     Locale locale = Locale.getDefault();
 
-    // String suffix = getResourceSuffix(locale);  
+    // String suffix = getResourceSuffix(locale);
     try
     {
 
       //System.out.println("resource " +className+suffix);
       // first try with the given locale
-      return ResourceBundle.getBundle(className, locale);
+      return (ListResourceBundle) ResourceBundle.getBundle(className, locale);
     }
     catch (MissingResourceException e)
     {
@@ -520,7 +380,7 @@
 
         // Since we can't find the localized property file,
         // fall back to en_US.
-        return ResourceBundle.getBundle(
+        return (ListResourceBundle) ResourceBundle.getBundle(
           XSLT_ERROR_RESOURCES, new Locale("en", "US"));
       }
       catch (MissingResourceException e2)
diff --git a/src/org/apache/xalan/res/XSLTErrorResources.java b/src/org/apache/xalan/res/XSLTErrorResources.java
index 0229482..1bd84e9 100644
--- a/src/org/apache/xalan/res/XSLTErrorResources.java
+++ b/src/org/apache/xalan/res/XSLTErrorResources.java
@@ -2,7 +2,7 @@
  * The Apache Software License, Version 1.1
  *
  *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -10,7 +10,7 @@
  * are met:
  *
  * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer. 
+ *    notice, this list of conditions and the following disclaimer.
  *
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in
@@ -18,7 +18,7 @@
  *    distribution.
  *
  * 3. The end-user documentation included with the redistribution,
- *    if any, must include the following acknowledgment:  
+ *    if any, must include the following acknowledgment:
  *       "This product includes software developed by the
  *        Apache Software Foundation (http://www.apache.org/)."
  *    Alternately, this acknowledgment may appear in the software itself,
@@ -26,7 +26,7 @@
  *
  * 4. The names "Xalan" and "Apache Software Foundation" must
  *    not be used to endorse or promote products derived from this
- *    software without prior written permission. For written 
+ *    software without prior written permission. For written
  *    permission, please contact apache@apache.org.
  *
  * 5. Products derived from this software may not be called "Apache",
@@ -56,1215 +56,2445 @@
  */
 package org.apache.xalan.res;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.DecimalFormat;
-import java.util.Locale;
+
 import java.util.MissingResourceException;
-import java.util.PropertyResourceBundle;
+import java.util.Locale;
 import java.util.ResourceBundle;
+import java.util.ListResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
 
 /**
  * Set up error messages.
  * We build a two dimensional array of message keys and
  * message strings. In order to add a new message here,
- * you need to first update the count of messages(MAX_CODE)or
- * the count of warnings(MAX_WARNING). The array will be
- * automatically filled in with the keys, but you need to
- * fill in the actual message string. Follow the instructions
- * below.
+ * you need to first add a String constant. And 
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
  */
-public class XSLTErrorResources extends PropertyResourceBundle
+public class XSLTErrorResources extends ListResourceBundle
 {
-  public XSLTErrorResources()
-  	throws java.io.IOException
-  {
-    super(null);
-  }
-  
-  public XSLTErrorResources(InputStream is) 
-  	throws java.io.IOException
-  {
-  	super(is);
-  }
 
-  /** The error suffix for construction error property keys.   */
-  public static final String ERROR_SUFFIX = "ER";
+/*
+ * This file contains error and warning messages related to Xalan Error
+ * Handling.
+ *
+ *  General notes to translators:
+ *
+ *  1) Xalan (or more properly, Xalan-interpretive) and XSLTC are names of
+ *     components.
+ *     XSLT is an acronym for "XML Stylesheet Language: Transformations".
+ *     XSLTC is an acronym for XSLT Compiler.
+ *
+ *  2) A stylesheet is a description of how to transform an input XML document
+ *     into a resultant XML document (or HTML document or text).  The
+ *     stylesheet itself is described in the form of an XML document.
+ *
+ *  3) A template is a component of a stylesheet that is used to match a
+ *     particular portion of an input document and specifies the form of the
+ *     corresponding portion of the output document.
+ *
+ *  4) An element is a mark-up tag in an XML document; an attribute is a
+ *     modifier on the tag.  For example, in <elem attr='val' attr2='val2'>
+ *     "elem" is an element name, "attr" and "attr2" are attribute names with
+ *     the values "val" and "val2", respectively.
+ *
+ *  5) A namespace declaration is a special attribute that is used to associate
+ *     a prefix with a URI (the namespace).  The meanings of element names and
+ *     attribute names that use that prefix are defined with respect to that
+ *     namespace.
+ *
+ *  6) "Translet" is an invented term that describes the class file that
+ *     results from compiling an XML stylesheet into a Java class.
+ *
+ *  7) XPath is a specification that describes a notation for identifying
+ *     nodes in a tree-structured representation of an XML document.  An
+ *     instance of that notation is referred to as an XPath expression.
+ *
+ */
 
-  /** The warning suffix for construction error property keys.   */
-  public static final String WARNING_SUFFIX = "WR";
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;
 
-//  /** Maximum error messages, this is needed to keep track of the number of messages.    */
-//  public static final int MAX_CODE = 226;          
-//
-//  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
-//  public static final int MAX_WARNING = 26;
-//
-//  /** Maximum misc strings.   */
-//  public static final int MAX_OTHERS = 45;
-//
-//  /** Maximum total warnings and error messages.          */
-//  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
 
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  /* 
+   * Static variables
+   */
+  public static final String ER_NO_CURLYBRACE = "ER_NO_CURLYBRACE";;
+  public static final String ER_ILLEGAL_ATTRIBUTE = "ER_ILLEGAL_ATTRIBUTE";
+  public static final String ER_NULL_SOURCENODE_APPLYIMPORTS = "ER_NULL_SOURCENODE_APPLYIMPORTS";
+  public static final String ER_CANNOT_ADD = "ER_CANNOT_ADD"; 
+  public static final String ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES="ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES";
+  public static final String ER_NO_NAME_ATTRIB = "ER_NO_NAME_ATTRIB";
+  public static final String ER_TEMPLATE_NOT_FOUND = "ER_TEMPLATE_NOT_FOUND";
+  public static final String ER_CANT_RESOLVE_NAME_AVT = "ER_CANT_RESOLVE_NAME_AVT";
+  public static final String ER_REQUIRES_ATTRIB = "ER_REQUIRES_ATTRIB";
+  public static final String ER_MUST_HAVE_TEST_ATTRIB = "ER_MUST_HAVE_TEST_ATTRIB";
+  public static final String ER_BAD_VAL_ON_LEVEL_ATTRIB =
+	 "ER_BAD_VAL_ON_LEVEL_ATTRIB";
+  public static final String ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML =
+	 "ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML";
+  public static final String ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 
+	 "ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME";
+  public static final String ER_NEED_MATCH_ATTRIB = "ER_NEED_MATCH_ATTRIB";
+  public static final String ER_NEED_NAME_OR_MATCH_ATTRIB = 
+	 "ER_NEED_NAME_OR_MATCH_ATTRIB";
+  public static final String ER_CANT_RESOLVE_NSPREFIX =
+	 "ER_CANT_RESOLVE_NSPREFIX";
+  public static final String ER_ILLEGAL_VALUE = "ER_ILLEGAL_VALUE";
+  public static final String ER_NO_OWNERDOC = "ER_NO_OWNERDOC";
+  public static final String ER_ELEMTEMPLATEELEM_ERR ="ER_ELEMTEMPLATEELEM_ERR";
+  public static final String ER_NULL_CHILD = "ER_NULL_CHILD";
+  public static final String ER_NEED_SELECT_ATTRIB = "ER_NEED_SELECT_ATTRIB";
+  public static final String ER_NEED_TEST_ATTRIB = "ER_NEED_TEST_ATTRIB";
+  public static final String ER_NEED_NAME_ATTRIB = "ER_NEED_NAME_ATTRIB";
+  public static final String ER_NO_CONTEXT_OWNERDOC = "ER_NO_CONTEXT_OWNERDOC";
+  public static final String ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 
+	 "ER_COULD_NOT_CREATE_XML_PROC_LIAISON";
+  public static final String ER_PROCESS_NOT_SUCCESSFUL = 
+	 "ER_PROCESS_NOT_SUCCESSFUL";
+  public static final String ER_NOT_SUCCESSFUL = "ER_NOT_SUCCESSFUL";
+  public static final String ER_ENCODING_NOT_SUPPORTED = 
+	 "ER_ENCODING_NOT_SUPPORTED";
+  public static final String ER_COULD_NOT_CREATE_TRACELISTENER = 
+	 "ER_COULD_NOT_CREATE_TRACELISTENER";
+  public static final String ER_KEY_REQUIRES_NAME_ATTRIB = 
+	 "ER_KEY_REQUIRES_NAME_ATTRIB";
+  public static final String ER_KEY_REQUIRES_MATCH_ATTRIB = 
+	 "ER_KEY_REQUIRES_MATCH_ATTRIB";
+  public static final String ER_KEY_REQUIRES_USE_ATTRIB = 
+	 "ER_KEY_REQUIRES_USE_ATTRIB";
+  public static final String ER_REQUIRES_ELEMENTS_ATTRIB = 
+	 "ER_REQUIRES_ELEMENTS_ATTRIB";
+  public static final String ER_MISSING_PREFIX_ATTRIB = 
+	 "ER_MISSING_PREFIX_ATTRIB";
+  public static final String ER_BAD_STYLESHEET_URL = "ER_BAD_STYLESHEET_URL";
+  public static final String ER_FILE_NOT_FOUND = "ER_FILE_NOT_FOUND";
+  public static final String ER_IOEXCEPTION = "ER_IOEXCEPTION";
+  public static final String ER_NO_HREF_ATTRIB = "ER_NO_HREF_ATTRIB";
+  public static final String ER_STYLESHEET_INCLUDES_ITSELF = 
+	 "ER_STYLESHEET_INCLUDES_ITSELF";
+  public static final String ER_PROCESSINCLUDE_ERROR ="ER_PROCESSINCLUDE_ERROR";
+  public static final String ER_MISSING_LANG_ATTRIB = "ER_MISSING_LANG_ATTRIB";
+  public static final String ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 
+	 "ER_MISSING_CONTAINER_ELEMENT_COMPONENT";
+  public static final String ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 
+	 "ER_CAN_ONLY_OUTPUT_TO_ELEMENT";
+  public static final String ER_PROCESS_ERROR = "ER_PROCESS_ERROR";
+  public static final String ER_UNIMPLNODE_ERROR = "ER_UNIMPLNODE_ERROR";
+  public static final String ER_NO_SELECT_EXPRESSION ="ER_NO_SELECT_EXPRESSION";
+  public static final String ER_CANNOT_SERIALIZE_XSLPROCESSOR = 
+	 "ER_CANNOT_SERIALIZE_XSLPROCESSOR";
+  public static final String ER_NO_INPUT_STYLESHEET = "ER_NO_INPUT_STYLESHEET";
+  public static final String ER_FAILED_PROCESS_STYLESHEET = 
+	 "ER_FAILED_PROCESS_STYLESHEET";
+  public static final String ER_COULDNT_PARSE_DOC = "ER_COULDNT_PARSE_DOC";
+  public static final String ER_COULDNT_FIND_FRAGMENT = 
+	 "ER_COULDNT_FIND_FRAGMENT";
+  public static final String ER_NODE_NOT_ELEMENT = "ER_NODE_NOT_ELEMENT";
+  public static final String ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 
+	 "ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB";
+  public static final String ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 
+	 "ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB";
+  public static final String ER_NO_CLONE_OF_DOCUMENT_FRAG = 
+	 "ER_NO_CLONE_OF_DOCUMENT_FRAG";
+  public static final String ER_CANT_CREATE_ITEM = "ER_CANT_CREATE_ITEM";
+  public static final String ER_XMLSPACE_ILLEGAL_VALUE = 
+	 "ER_XMLSPACE_ILLEGAL_VALUE";
+  public static final String ER_NO_XSLKEY_DECLARATION = 
+	 "ER_NO_XSLKEY_DECLARATION";
+  public static final String ER_CANT_CREATE_URL = "ER_CANT_CREATE_URL";
+  public static final String ER_XSLFUNCTIONS_UNSUPPORTED = 
+	 "ER_XSLFUNCTIONS_UNSUPPORTED";
+  public static final String ER_PROCESSOR_ERROR = "ER_PROCESSOR_ERROR";
+  public static final String ER_NOT_ALLOWED_INSIDE_STYLESHEET = 
+	 "ER_NOT_ALLOWED_INSIDE_STYLESHEET";
+  public static final String ER_RESULTNS_NOT_SUPPORTED = 
+	 "ER_RESULTNS_NOT_SUPPORTED";
+  public static final String ER_DEFAULTSPACE_NOT_SUPPORTED = 
+	 "ER_DEFAULTSPACE_NOT_SUPPORTED";
+  public static final String ER_INDENTRESULT_NOT_SUPPORTED = 
+	 "ER_INDENTRESULT_NOT_SUPPORTED";
+  public static final String ER_ILLEGAL_ATTRIB = "ER_ILLEGAL_ATTRIB";
+  public static final String ER_UNKNOWN_XSL_ELEM = "ER_UNKNOWN_XSL_ELEM";
+  public static final String ER_BAD_XSLSORT_USE = "ER_BAD_XSLSORT_USE";
+  public static final String ER_MISPLACED_XSLWHEN = "ER_MISPLACED_XSLWHEN";
+  public static final String ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 
+	 "ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE";
+  public static final String ER_MISPLACED_XSLOTHERWISE = 
+	 "ER_MISPLACED_XSLOTHERWISE";
+  public static final String ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 
+	 "ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE";
+  public static final String ER_NOT_ALLOWED_INSIDE_TEMPLATE = 
+	 "ER_NOT_ALLOWED_INSIDE_TEMPLATE";
+  public static final String ER_UNKNOWN_EXT_NS_PREFIX = 
+	 "ER_UNKNOWN_EXT_NS_PREFIX";
+  public static final String ER_IMPORTS_AS_FIRST_ELEM = 
+	 "ER_IMPORTS_AS_FIRST_ELEM";
+  public static final String ER_IMPORTING_ITSELF = "ER_IMPORTING_ITSELF";
+  public static final String ER_XMLSPACE_ILLEGAL_VAL ="ER_XMLSPACE_ILLEGAL_VAL";
+  public static final String ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 
+	 "ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL";
+  public static final String ER_SAX_EXCEPTION = "ER_SAX_EXCEPTION";
+  public static final String ER_FUNCTION_NOT_SUPPORTED = 
+	 "ER_FUNCTION_NOT_SUPPORTED";
+  public static final String ER_XSLT_ERROR = "ER_XSLT_ERROR";
+  public static final String ER_CURRENCY_SIGN_ILLEGAL=
+	 "ER_CURRENCY_SIGN_ILLEGAL";
+  public static final String ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 
+	 "ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM";
+  public static final String ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 
+	 "ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER";
+  public static final String ER_REDIRECT_COULDNT_GET_FILENAME = 
+	 "ER_REDIRECT_COULDNT_GET_FILENAME";
+  public static final String ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 
+	 "ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT";
+  public static final String ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 
+	 "ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX";
+  public static final String ER_MISSING_NS_URI = "ER_MISSING_NS_URI";
+  public static final String ER_MISSING_ARG_FOR_OPTION = 
+	 "ER_MISSING_ARG_FOR_OPTION";
+  public static final String ER_INVALID_OPTION = "ER_INVALID_OPTION";
+  public static final String ER_MALFORMED_FORMAT_STRING = 
+	 "ER_MALFORMED_FORMAT_STRING";
+  public static final String ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 
+	 "ER_STYLESHEET_REQUIRES_VERSION_ATTRIB";
+  public static final String ER_ILLEGAL_ATTRIBUTE_VALUE = 
+	 "ER_ILLEGAL_ATTRIBUTE_VALUE";
+  public static final String ER_CHOOSE_REQUIRES_WHEN ="ER_CHOOSE_REQUIRES_WHEN";
+  public static final String ER_NO_APPLY_IMPORT_IN_FOR_EACH = 
+	 "ER_NO_APPLY_IMPORT_IN_FOR_EACH";
+  public static final String ER_CANT_USE_DTM_FOR_OUTPUT = 
+	 "ER_CANT_USE_DTM_FOR_OUTPUT";
+  public static final String ER_CANT_USE_DTM_FOR_INPUT = 
+	 "ER_CANT_USE_DTM_FOR_INPUT";
+  public static final String ER_CALL_TO_EXT_FAILED = "ER_CALL_TO_EXT_FAILED";
+  public static final String ER_PREFIX_MUST_RESOLVE = "ER_PREFIX_MUST_RESOLVE";
+  public static final String ER_INVALID_UTF16_SURROGATE = 
+	 "ER_INVALID_UTF16_SURROGATE";
+  public static final String ER_XSLATTRSET_USED_ITSELF = 
+	 "ER_XSLATTRSET_USED_ITSELF";
+  public static final String ER_CANNOT_MIX_XERCESDOM ="ER_CANNOT_MIX_XERCESDOM";
+  public static final String ER_TOO_MANY_LISTENERS = "ER_TOO_MANY_LISTENERS";
+  public static final String ER_IN_ELEMTEMPLATEELEM_READOBJECT = 
+	 "ER_IN_ELEMTEMPLATEELEM_READOBJECT";
+  public static final String ER_DUPLICATE_NAMED_TEMPLATE = 
+	 "ER_DUPLICATE_NAMED_TEMPLATE";
+  public static final String ER_INVALID_KEY_CALL = "ER_INVALID_KEY_CALL";
+  public static final String ER_REFERENCING_ITSELF = "ER_REFERENCING_ITSELF";
+  public static final String ER_ILLEGAL_DOMSOURCE_INPUT = 
+	 "ER_ILLEGAL_DOMSOURCE_INPUT";
+  public static final String ER_CLASS_NOT_FOUND_FOR_OPTION = 
+	 "ER_CLASS_NOT_FOUND_FOR_OPTION";
+  public static final String ER_REQUIRED_ELEM_NOT_FOUND = 
+	 "ER_REQUIRED_ELEM_NOT_FOUND";
+  public static final String ER_INPUT_CANNOT_BE_NULL ="ER_INPUT_CANNOT_BE_NULL";
+  public static final String ER_URI_CANNOT_BE_NULL = "ER_URI_CANNOT_BE_NULL";
+  public static final String ER_FILE_CANNOT_BE_NULL = "ER_FILE_CANNOT_BE_NULL";
+  public static final String ER_SOURCE_CANNOT_BE_NULL = 
+	 "ER_SOURCE_CANNOT_BE_NULL";
+  public static final String ER_CANNOT_OVERWRITE_CAUSE = 
+	 "ER_CANNOT_OVERWRITE_CAUSE";
+  public static final String ER_CANNOT_INIT_BSFMGR = "ER_CANNOT_INIT_BSFMGR";
+  public static final String ER_CANNOT_CMPL_EXTENSN = "ER_CANNOT_CMPL_EXTENSN";
+  public static final String ER_CANNOT_CREATE_EXTENSN = 
+	 "ER_CANNOT_CREATE_EXTENSN";
+  public static final String ER_INSTANCE_MTHD_CALL_REQUIRES = 
+	 "ER_INSTANCE_MTHD_CALL_REQUIRES";
+  public static final String ER_INVALID_ELEMENT_NAME ="ER_INVALID_ELEMENT_NAME";
+  public static final String ER_ELEMENT_NAME_METHOD_STATIC = 
+	 "ER_ELEMENT_NAME_METHOD_STATIC";
+  public static final String ER_EXTENSION_FUNC_UNKNOWN = 
+	 "ER_EXTENSION_FUNC_UNKNOWN";
+  public static final String ER_MORE_MATCH_CONSTRUCTOR = 
+	 "ER_MORE_MATCH_CONSTRUCTOR";
+  public static final String ER_MORE_MATCH_METHOD = "ER_MORE_MATCH_METHOD";
+  public static final String ER_MORE_MATCH_ELEMENT = "ER_MORE_MATCH_ELEMENT";
+  public static final String ER_INVALID_CONTEXT_PASSED = 
+	 "ER_INVALID_CONTEXT_PASSED";
+  public static final String ER_POOL_EXISTS = "ER_POOL_EXISTS";
+  public static final String ER_NO_DRIVER_NAME = "ER_NO_DRIVER_NAME";
+  public static final String ER_NO_URL = "ER_NO_URL";
+  public static final String ER_POOL_SIZE_LESSTHAN_ONE = 
+	 "ER_POOL_SIZE_LESSTHAN_ONE";
+  public static final String ER_INVALID_DRIVER = "ER_INVALID_DRIVER";
+  public static final String ER_NO_STYLESHEETROOT = "ER_NO_STYLESHEETROOT";
+  public static final String ER_ILLEGAL_XMLSPACE_VALUE = 
+	 "ER_ILLEGAL_XMLSPACE_VALUE";
+  public static final String ER_PROCESSFROMNODE_FAILED = 
+	 "ER_PROCESSFROMNODE_FAILED";
+  public static final String ER_RESOURCE_COULD_NOT_LOAD = 
+	 "ER_RESOURCE_COULD_NOT_LOAD";
+  public static final String ER_BUFFER_SIZE_LESSTHAN_ZERO = 
+	 "ER_BUFFER_SIZE_LESSTHAN_ZERO";
+  public static final String ER_UNKNOWN_ERROR_CALLING_EXTENSION = 
+	 "ER_UNKNOWN_ERROR_CALLING_EXTENSION";
+  public static final String ER_NO_NAMESPACE_DECL = "ER_NO_NAMESPACE_DECL";
+  public static final String ER_ELEM_CONTENT_NOT_ALLOWED = 
+	 "ER_ELEM_CONTENT_NOT_ALLOWED";
+  public static final String ER_STYLESHEET_DIRECTED_TERMINATION = 
+	 "ER_STYLESHEET_DIRECTED_TERMINATION";
+  public static final String ER_ONE_OR_TWO = "ER_ONE_OR_TWO";
+  public static final String ER_TWO_OR_THREE = "ER_TWO_OR_THREE";
+  public static final String ER_COULD_NOT_LOAD_RESOURCE = 
+	 "ER_COULD_NOT_LOAD_RESOURCE";
+  public static final String ER_CANNOT_INIT_DEFAULT_TEMPLATES = 
+	 "ER_CANNOT_INIT_DEFAULT_TEMPLATES";
+  public static final String ER_RESULT_NULL = "ER_RESULT_NULL";
+  public static final String ER_RESULT_COULD_NOT_BE_SET = 
+	 "ER_RESULT_COULD_NOT_BE_SET";
+  public static final String ER_NO_OUTPUT_SPECIFIED = "ER_NO_OUTPUT_SPECIFIED";
+  public static final String ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 
+	 "ER_CANNOT_TRANSFORM_TO_RESULT_TYPE";
+  public static final String ER_CANNOT_TRANSFORM_SOURCE_TYPE = 
+	 "ER_CANNOT_TRANSFORM_SOURCE_TYPE";
+  public static final String ER_NULL_CONTENT_HANDLER ="ER_NULL_CONTENT_HANDLER";
+  public static final String ER_NULL_ERROR_HANDLER = "ER_NULL_ERROR_HANDLER";
+  public static final String ER_CANNOT_CALL_PARSE = "ER_CANNOT_CALL_PARSE";
+  public static final String ER_NO_PARENT_FOR_FILTER ="ER_NO_PARENT_FOR_FILTER";
+  public static final String ER_NO_STYLESHEET_IN_MEDIA = 
+	 "ER_NO_STYLESHEET_IN_MEDIA";
+  public static final String ER_NO_STYLESHEET_PI = "ER_NO_STYLESHEET_PI";
+  public static final String ER_NO_DEFAULT_IMPL = "ER_NO_DEFAULT_IMPL";
+  public static final String ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 
+	 "ER_CHUNKEDINTARRAY_NOT_SUPPORTED";
+  public static final String ER_OFFSET_BIGGER_THAN_SLOT = 
+	 "ER_OFFSET_BIGGER_THAN_SLOT";
+  public static final String ER_COROUTINE_NOT_AVAIL = "ER_COROUTINE_NOT_AVAIL";
+  public static final String ER_COROUTINE_CO_EXIT = "ER_COROUTINE_CO_EXIT";
+  public static final String ER_COJOINROUTINESET_FAILED = 
+	 "ER_COJOINROUTINESET_FAILED";
+  public static final String ER_COROUTINE_PARAM = "ER_COROUTINE_PARAM";
+  public static final String ER_PARSER_DOTERMINATE_ANSWERS = 
+	 "ER_PARSER_DOTERMINATE_ANSWERS";
+  public static final String ER_NO_PARSE_CALL_WHILE_PARSING = 
+	 "ER_NO_PARSE_CALL_WHILE_PARSING";
+  public static final String ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 
+	 "ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED";
+  public static final String ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 
+	 "ER_ITERATOR_AXIS_NOT_IMPLEMENTED";
+  public static final String ER_ITERATOR_CLONE_NOT_SUPPORTED = 
+	 "ER_ITERATOR_CLONE_NOT_SUPPORTED";
+  public static final String ER_UNKNOWN_AXIS_TYPE = "ER_UNKNOWN_AXIS_TYPE";
+  public static final String ER_AXIS_NOT_SUPPORTED = "ER_AXIS_NOT_SUPPORTED";
+  public static final String ER_NO_DTMIDS_AVAIL = "ER_NO_DTMIDS_AVAIL";
+  public static final String ER_NOT_SUPPORTED = "ER_NOT_SUPPORTED";
+  public static final String ER_NODE_NON_NULL = "ER_NODE_NON_NULL";
+  public static final String ER_COULD_NOT_RESOLVE_NODE = 
+	 "ER_COULD_NOT_RESOLVE_NODE";
+  public static final String ER_STARTPARSE_WHILE_PARSING = 
+	 "ER_STARTPARSE_WHILE_PARSING";
+  public static final String ER_STARTPARSE_NEEDS_SAXPARSER = 
+	 "ER_STARTPARSE_NEEDS_SAXPARSER";
+  public static final String ER_COULD_NOT_INIT_PARSER = 
+	 "ER_COULD_NOT_INIT_PARSER";
+  public static final String ER_PROPERTY_VALUE_BOOLEAN = 
+	 "ER_PROPERTY_VALUE_BOOLEAN";
+  public static final String ER_EXCEPTION_CREATING_POOL = 
+	 "ER_EXCEPTION_CREATING_POOL";
+  public static final String ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 
+	 "ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE";
+  public static final String ER_SCHEME_REQUIRED = "ER_SCHEME_REQUIRED";
+  public static final String ER_NO_SCHEME_IN_URI = "ER_NO_SCHEME_IN_URI";
+  public static final String ER_NO_SCHEME_INURI = "ER_NO_SCHEME_INURI";
+  public static final String ER_PATH_INVALID_CHAR = "ER_PATH_INVALID_CHAR";
+  public static final String ER_SCHEME_FROM_NULL_STRING = 
+	 "ER_SCHEME_FROM_NULL_STRING";
+  public static final String ER_SCHEME_NOT_CONFORMANT = 
+	 "ER_SCHEME_NOT_CONFORMANT";
+  public static final String ER_HOST_ADDRESS_NOT_WELLFORMED = 
+	 "ER_HOST_ADDRESS_NOT_WELLFORMED";
+  public static final String ER_PORT_WHEN_HOST_NULL = "ER_PORT_WHEN_HOST_NULL";
+  public static final String ER_INVALID_PORT = "ER_INVALID_PORT";
+  public static final String ER_FRAG_FOR_GENERIC_URI ="ER_FRAG_FOR_GENERIC_URI";
+  public static final String ER_FRAG_WHEN_PATH_NULL = "ER_FRAG_WHEN_PATH_NULL";
+  public static final String ER_FRAG_INVALID_CHAR = "ER_FRAG_INVALID_CHAR";
+  public static final String ER_PARSER_IN_USE = "ER_PARSER_IN_USE";
+  public static final String ER_CANNOT_CHANGE_WHILE_PARSING = 
+	 "ER_CANNOT_CHANGE_WHILE_PARSING";
+  public static final String ER_SELF_CAUSATION_NOT_PERMITTED = 
+	 "ER_SELF_CAUSATION_NOT_PERMITTED";
+  public static final String ER_COULD_NOT_FIND_EXTERN_SCRIPT = 
+	 "ER_COULD_NOT_FIND_EXTERN_SCRIPT";
+  public static final String ER_RESOURCE_COULD_NOT_FIND = 
+	 "ER_RESOURCE_COULD_NOT_FIND";
+  public static final String ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 
+	 "ER_OUTPUT_PROPERTY_NOT_RECOGNIZED";
+  public static final String ER_NO_USERINFO_IF_NO_HOST = 
+	 "ER_NO_USERINFO_IF_NO_HOST";
+  public static final String ER_NO_PORT_IF_NO_HOST = "ER_NO_PORT_IF_NO_HOST";
+  public static final String ER_NO_QUERY_STRING_IN_PATH = 
+	 "ER_NO_QUERY_STRING_IN_PATH";
+  public static final String ER_NO_FRAGMENT_STRING_IN_PATH = 
+	 "ER_NO_FRAGMENT_STRING_IN_PATH";
+  public static final String ER_CANNOT_INIT_URI_EMPTY_PARMS = 
+	 "ER_CANNOT_INIT_URI_EMPTY_PARMS";
+  public static final String ER_FAILED_CREATING_ELEMLITRSLT = 
+	 "ER_FAILED_CREATING_ELEMLITRSLT";
+  public static final String ER_VALUE_SHOULD_BE_NUMBER = 
+	 "ER_VALUE_SHOULD_BE_NUMBER";
+  public static final String ER_VALUE_SHOULD_EQUAL = "ER_VALUE_SHOULD_EQUAL";
+  public static final String ER_FAILED_CALLING_METHOD = 
+	 "ER_FAILED_CALLING_METHOD";
+  public static final String ER_FAILED_CREATING_ELEMTMPL = 
+	 "ER_FAILED_CREATING_ELEMTMPL";
+  public static final String ER_CHARS_NOT_ALLOWED = "ER_CHARS_NOT_ALLOWED";
+  public static final String ER_ATTR_NOT_ALLOWED = "ER_ATTR_NOT_ALLOWED";
+  public static final String ER_METHOD_NOT_SUPPORTED ="ER_METHOD_NOT_SUPPORTED";
+  public static final String ER_BAD_VALUE = "ER_BAD_VALUE";
+  public static final String ER_ATTRIB_VALUE_NOT_FOUND = 
+	 "ER_ATTRIB_VALUE_NOT_FOUND";
+  public static final String ER_ATTRIB_VALUE_NOT_RECOGNIZED = 
+	 "ER_ATTRIB_VALUE_NOT_RECOGNIZED";
+  public static final String ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 
+	 "ER_INCRSAXSRCFILTER_NOT_RESTARTABLE";
+  public static final String ER_XMLRDR_NOT_BEFORE_STARTPARSE = 
+	 "ER_XMLRDR_NOT_BEFORE_STARTPARSE";
+  public static final String ER_NULL_URI_NAMESPACE = "ER_NULL_URI_NAMESPACE";
+  public static final String ER_NUMBER_TOO_BIG = "ER_NUMBER_TOO_BIG";
+  public static final String  ER_CANNOT_FIND_SAX1_DRIVER = 
+	 "ER_CANNOT_FIND_SAX1_DRIVER";
+  public static final String  ER_SAX1_DRIVER_NOT_LOADED = 
+	 "ER_SAX1_DRIVER_NOT_LOADED";
+  public static final String  ER_SAX1_DRIVER_NOT_INSTANTIATED = 
+	 "ER_SAX1_DRIVER_NOT_INSTANTIATED" ;
+  public static final String ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 
+	 "ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER";
+  public static final String  ER_PARSER_PROPERTY_NOT_SPECIFIED = 
+	 "ER_PARSER_PROPERTY_NOT_SPECIFIED";
+  public static final String  ER_PARSER_ARG_CANNOT_BE_NULL = 
+	 "ER_PARSER_ARG_CANNOT_BE_NULL" ;
+  public static final String  ER_FEATURE = "ER_FEATURE";
+  public static final String ER_PROPERTY = "ER_PROPERTY" ;
+  public static final String ER_NULL_ENTITY_RESOLVER ="ER_NULL_ENTITY_RESOLVER";
+  public static final String  ER_NULL_DTD_HANDLER = "ER_NULL_DTD_HANDLER" ;
+  public static final String ER_NO_DRIVER_NAME_SPECIFIED = 
+	 "ER_NO_DRIVER_NAME_SPECIFIED";
+  public static final String ER_NO_URL_SPECIFIED = "ER_NO_URL_SPECIFIED";
+  public static final String ER_POOLSIZE_LESS_THAN_ONE = 
+	 "ER_POOLSIZE_LESS_THAN_ONE";
+  public static final String ER_INVALID_DRIVER_NAME = "ER_INVALID_DRIVER_NAME";
+  public static final String ER_ERRORLISTENER = "ER_ERRORLISTENER";
+  public static final String ER_ASSERT_NO_TEMPLATE_PARENT = 
+	 "ER_ASSERT_NO_TEMPLATE_PARENT";
+  public static final String ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 
+	 "ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR";
+  public static final String ER_AXIS_TRAVERSER_NOT_SUPPORTED = 
+	 "ER_AXIS_TRAVERSER_NOT_SUPPORTED";
+  public static final String ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 
+	 "ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER";
+  public static final String ER_NOT_ALLOWED_IN_POSITION = 
+	 "ER_NOT_ALLOWED_IN_POSITION";
+  public static final String ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 
+	 "ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION";
+  public static final String INVALID_TCHAR = "INVALID_TCHAR";
+  public static final String ER_SYSTEMID_UNKNOWN = "ER_SYSTEMID_UNKNOWN";
+  public static final String ER_LOCATION_UNKNOWN = "ER_LOCATION_UNKNOWN";
+  public static final String INVALID_QNAME = "INVALID_QNAME";
+  public static final String INVALID_ENUM = "INVALID_ENUM";
+  public static final String INVALID_NMTOKEN = "INVALID_NMTOKEN";
+  public static final String INVALID_NCNAME = "INVALID_NCNAME";
+  public static final String INVALID_BOOLEAN = "INVALID_BOOLEAN";
+  public static final String INVALID_NUMBER = "INVALID_NUMBER";
+  public static final String ER_ARG_LITERAL = "ER_ARG_LITERAL";
+  public static final String ER_DUPLICATE_GLOBAL_VAR ="ER_DUPLICATE_GLOBAL_VAR";
+  public static final String ER_DUPLICATE_VAR = "ER_DUPLICATE_VAR";
+  public static final String ER_TEMPLATE_NAME_MATCH = "ER_TEMPLATE_NAME_MATCH";
+  public static final String ER_INVALID_PREFIX = "ER_INVALID_PREFIX";
+  public static final String ER_NO_ATTRIB_SET = "ER_NO_ATTRIB_SET";
+
+  public static final String WG_FOUND_CURLYBRACE = "WG_FOUND_CURLYBRACE";
+  public static final String WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 
+	 "WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR";
+  public static final String WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 
+	 "WG_EXPR_ATTRIB_CHANGED_TO_SELECT";
+  public static final String WG_NO_LOCALE_IN_FORMATNUMBER = 
+	 "WG_NO_LOCALE_IN_FORMATNUMBER";
+  public static final String WG_LOCALE_NOT_FOUND = "WG_LOCALE_NOT_FOUND";
+  public static final String WG_CANNOT_MAKE_URL_FROM ="WG_CANNOT_MAKE_URL_FROM";
+  public static final String WG_CANNOT_LOAD_REQUESTED_DOC = 
+	 "WG_CANNOT_LOAD_REQUESTED_DOC";
+  public static final String WG_CANNOT_FIND_COLLATOR ="WG_CANNOT_FIND_COLLATOR";
+  public static final String WG_FUNCTIONS_SHOULD_USE_URL = 
+	 "WG_FUNCTIONS_SHOULD_USE_URL";
+  public static final String WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 
+	 "WG_ENCODING_NOT_SUPPORTED_USING_UTF8";
+  public static final String WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 
+	 "WG_ENCODING_NOT_SUPPORTED_USING_JAVA";
+  public static final String WG_SPECIFICITY_CONFLICTS = 
+	 "WG_SPECIFICITY_CONFLICTS";
+  public static final String WG_PARSING_AND_PREPARING = 
+	 "WG_PARSING_AND_PREPARING";
+  public static final String WG_ATTR_TEMPLATE = "WG_ATTR_TEMPLATE";
+  public static final String WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = "WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESP";
+  public static final String WG_ATTRIB_NOT_HANDLED = "WG_ATTRIB_NOT_HANDLED";
+  public static final String WG_NO_DECIMALFORMAT_DECLARATION = 
+	 "WG_NO_DECIMALFORMAT_DECLARATION";
+  public static final String WG_OLD_XSLT_NS = "WG_OLD_XSLT_NS";
+  public static final String WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 
+	 "WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED";
+  public static final String WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 
+	 "WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE";
+  public static final String WG_ILLEGAL_ATTRIBUTE = "WG_ILLEGAL_ATTRIBUTE";
+  public static final String WG_COULD_NOT_RESOLVE_PREFIX = 
+	 "WG_COULD_NOT_RESOLVE_PREFIX";
+  public static final String WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 
+	 "WG_STYLESHEET_REQUIRES_VERSION_ATTRIB";
+  public static final String WG_ILLEGAL_ATTRIBUTE_NAME = 
+	 "WG_ILLEGAL_ATTRIBUTE_NAME";
+  public static final String WG_ILLEGAL_ATTRIBUTE_VALUE = 
+	 "WG_ILLEGAL_ATTRIBUTE_VALUE";
+  public static final String WG_EMPTY_SECOND_ARG = "WG_EMPTY_SECOND_ARG";
+  public static final String WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 
+	 "WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML";
+  public static final String WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 
+	 "WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME";
+  public static final String WG_ILLEGAL_ATTRIBUTE_POSITION = 
+	 "WG_ILLEGAL_ATTRIBUTE_POSITION";
+
+
+//  public static final int ER_NO_CURLYBRACE = 1;
   /*
    * 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;
 
+  /** The lookup table for error messages.   */
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+  {"ER0000" , "{0}" },
+ 
 
   /** ER_NO_CURLYBRACE          */
-  public static final int ER_NO_CURLYBRACE = 1;
+ 
+//  public static final int ER_NO_CURLYBRACE = 1;
 
+    { ER_NO_CURLYBRACE,                            
+      "Error: Can not have '{' within expression"},
 
   /** ER_ILLEGAL_ATTRIBUTE          */
-  public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+// public static final int ER_ILLEGAL_ATTRIBUTE = 2;
 
+    { ER_ILLEGAL_ATTRIBUTE , 
+     "{0} has an illegal attribute: {1}"},
 
   /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
-  public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+//  public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
 
+  {ER_NULL_SOURCENODE_APPLYIMPORTS ,
+      "sourceNode is null in xsl:apply-imports!"},
 
   /** ER_CANNOT_ADD          */
-  public static final int ER_CANNOT_ADD = 4;
+ // public static final int ER_CANNOT_ADD = 4; 
+
+  {ER_CANNOT_ADD,
+      "Can not add {0} to {1}"},
 
 
   /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
-  public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+//  public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
 
 
+    { ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES, 
+      "sourceNode is null in handleApplyTemplatesInstruction!"},
+
   /** ER_NO_NAME_ATTRIB          */
-  public static final int ER_NO_NAME_ATTRIB = 6;
+//  public static final int ER_NO_NAME_ATTRIB = 6;
 
 
+    { ER_NO_NAME_ATTRIB, 
+     "{0} must have a name attribute."},
+
   /** ER_TEMPLATE_NOT_FOUND          */
-  public static final int ER_TEMPLATE_NOT_FOUND = 7;
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
 
 
+    {ER_TEMPLATE_NOT_FOUND,
+     "Could not find template named: {0}"},
+
   /** ER_CANT_RESOLVE_NAME_AVT          */
-  public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+  // public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
 
+    {ER_CANT_RESOLVE_NAME_AVT,
+      "Could not resolve name AVT in xsl:call-template."},
 
   /** ER_REQUIRES_ATTRIB          */
-  public static final int ER_REQUIRES_ATTRIB = 9;
+  //public static final int ER_REQUIRES_ATTRIB = 9;
 
 
+    {ER_REQUIRES_ATTRIB,
+     "{0} requires attribute: {1}"},
+
   /** ER_MUST_HAVE_TEST_ATTRIB          */
-  public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+ // public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
 
 
+    { ER_MUST_HAVE_TEST_ATTRIB, 
+      "{0} must have a ''test'' attribute."},
+
   /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
-  public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+//  public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
 
 
+    {ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "Bad value on level attribute: {0}"},
+
   /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
-  public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+//  public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
 
 
+    {ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML, 
+      "processing-instruction name can not be 'xml'"},
+
   /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
-  public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+//  public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
 
 
+    { ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "processing-instruction name must be a valid NCName: {0}"},
+
   /** ER_NEED_MATCH_ATTRIB          */
-  public static final int ER_NEED_MATCH_ATTRIB = 14;
+//  public static final int ER_NEED_MATCH_ATTRIB = 14;
 
 
+    { ER_NEED_MATCH_ATTRIB,
+      "{0} must have a match attribute if it has a mode."},
+
   /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
-  public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+//  public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
 
 
+    { ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} requires either a name or a match attribute."},
+
   /** ER_CANT_RESOLVE_NSPREFIX          */
-  public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+//  public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
 
 
+    {ER_CANT_RESOLVE_NSPREFIX,
+      "Can not resolve namespace prefix: {0}"},
+
   /** ER_ILLEGAL_VALUE          */
-  public static final int ER_ILLEGAL_VALUE = 17;
+//  public static final int ER_ILLEGAL_VALUE = 17;
 
 
+    { ER_ILLEGAL_VALUE,
+     "xml:space has an illegal value: {0}"},
+
   /** ER_NO_OWNERDOC          */
-  public static final int ER_NO_OWNERDOC = 18;
+//  public static final int ER_NO_OWNERDOC = 18;
 
 
+    { ER_NO_OWNERDOC,
+      "Child node does not have an owner document!"},
+
   /** ER_ELEMTEMPLATEELEM_ERR          */
-  public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+//  public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
 
 
+    { ER_ELEMTEMPLATEELEM_ERR,
+     "ElemTemplateElement error: {0}"},
+
   /** ER_NULL_CHILD          */
-  public static final int ER_NULL_CHILD = 20;
+//  public static final int ER_NULL_CHILD = 20;
 
 
+    { ER_NULL_CHILD,
+     "Trying to add a null child!"},
+
   /** ER_NEED_SELECT_ATTRIB          */
-  public static final int ER_NEED_SELECT_ATTRIB = 21;
+//  public static final int ER_NEED_SELECT_ATTRIB = 21;
 
 
+    { ER_NEED_SELECT_ATTRIB,
+     "{0} requires a select attribute."},
+
   /** ER_NEED_TEST_ATTRIB          */
-  public static final int ER_NEED_TEST_ATTRIB = 22;
+//  public static final int ER_NEED_TEST_ATTRIB = 22;
 
 
+    { ER_NEED_TEST_ATTRIB ,
+      "xsl:when must have a 'test' attribute."},
+
   /** ER_NEED_NAME_ATTRIB          */
-  public static final int ER_NEED_NAME_ATTRIB = 23;
+//  public static final int ER_NEED_NAME_ATTRIB = 23;
 
 
+    { ER_NEED_NAME_ATTRIB,
+      "xsl:with-param must have a 'name' attribute."},
+
   /** ER_NO_CONTEXT_OWNERDOC          */
-  public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+//  public static final int ER_NO_CONTEXT_OWNERDOC = 24;
 
 
+    { ER_NO_CONTEXT_OWNERDOC,
+      "context does not have an owner document!"},
+
   /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
-  public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+//  public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
 
 
+    {ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "Could not create XML TransformerFactory Liaison: {0}"},
+
   /** ER_PROCESS_NOT_SUCCESSFUL          */
-  public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+//  public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
 
 
+    {ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: Process was not successful."},
+
   /** ER_NOT_SUCCESSFUL          */
-  public static final int ER_NOT_SUCCESSFUL = 27;
+//  public static final int ER_NOT_SUCCESSFUL = 27;
 
 
+    { ER_NOT_SUCCESSFUL,
+     "Xalan: was not successful."},
+
   /** ER_ENCODING_NOT_SUPPORTED          */
-  public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+//  public static final int ER_ENCODING_NOT_SUPPORTED = 28;
 
 
+    { ER_ENCODING_NOT_SUPPORTED,
+     "Encoding not supported: {0}"},
+
   /** ER_COULD_NOT_CREATE_TRACELISTENER          */
-  public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+//  public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
 
 
+    {ER_COULD_NOT_CREATE_TRACELISTENER,
+      "Could not create TraceListener: {0}"},
+
   /** ER_KEY_REQUIRES_NAME_ATTRIB          */
-  public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+//  public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
 
 
+    {ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key requires a 'name' attribute!"},
+
   /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
-  public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+//  public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
 
 
+    { ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key requires a 'match' attribute!"},
+
   /** ER_KEY_REQUIRES_USE_ATTRIB          */
-  public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+//  public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
 
 
+    { ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key requires a 'use' attribute!"},
+
   /** ER_REQUIRES_ELEMENTS_ATTRIB          */
-  public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+//  public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
 
 
+    { ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} requires an ''elements'' attribute!"},
+
   /** ER_MISSING_PREFIX_ATTRIB          */
-  public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+//  public static final int ER_MISSING_PREFIX_ATTRIB = 34;
 
 
+    { ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} attribute ''prefix'' is missing"},
+
   /** ER_BAD_STYLESHEET_URL          */
-  public static final int ER_BAD_STYLESHEET_URL = 35;
+//  public static final int ER_BAD_STYLESHEET_URL = 35;
 
 
+    { ER_BAD_STYLESHEET_URL,
+     "Stylesheet URL is bad: {0}"},
+
   /** ER_FILE_NOT_FOUND          */
-  public static final int ER_FILE_NOT_FOUND = 36;
+//  public static final int ER_FILE_NOT_FOUND = 36;
 
 
+    { ER_FILE_NOT_FOUND,
+     "Stylesheet file was not found: {0}"},
+
   /** ER_IOEXCEPTION          */
-  public static final int ER_IOEXCEPTION = 37;
+//  public static final int ER_IOEXCEPTION = 37;
 
 
+    { ER_IOEXCEPTION,
+      "Had IO Exception with stylesheet file: {0}"},
+
   /** ER_NO_HREF_ATTRIB          */
-  public static final int ER_NO_HREF_ATTRIB = 38;
+//  public static final int ER_NO_HREF_ATTRIB = 38;
 
 
+    { ER_NO_HREF_ATTRIB, 
+      "(StylesheetHandler) Could not find href attribute for {0}"},
+
   /** ER_STYLESHEET_INCLUDES_ITSELF          */
-  public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+//  public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
 
 
+    { ER_STYLESHEET_INCLUDES_ITSELF, 
+      "(StylesheetHandler) {0} is directly or indirectly including itself!"},
+
   /** ER_PROCESSINCLUDE_ERROR          */
-  public static final int ER_PROCESSINCLUDE_ERROR = 40;
+//  public static final int ER_PROCESSINCLUDE_ERROR = 40;
 
 
+    { ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude error, {0}"},
+
   /** ER_MISSING_LANG_ATTRIB          */
-  public static final int ER_MISSING_LANG_ATTRIB = 41;
+//  public static final int ER_MISSING_LANG_ATTRIB = 41;
 
 
+    { ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} attribute ''lang'' is missing"},
+
   /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
-  public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+//  public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
 
+    { ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) misplaced {0} element?? Missing container element ''component''"},
 
   /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
-  public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+//  public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
 
+    { ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "Can only output to an Element, DocumentFragment, Document, or PrintWriter."},
 
   /** ER_PROCESS_ERROR          */
-  public static final int ER_PROCESS_ERROR = 44;
+//  public static final int ER_PROCESS_ERROR = 44;
 
+    { ER_PROCESS_ERROR,
+     "StylesheetRoot.process error"},
 
   /** ER_UNIMPLNODE_ERROR          */
-  public static final int ER_UNIMPLNODE_ERROR = 45;
+//  public static final int ER_UNIMPLNODE_ERROR = 45;
 
+    { ER_UNIMPLNODE_ERROR,
+     "UnImplNode error: {0}"},
 
   /** ER_NO_SELECT_EXPRESSION          */
-  public static final int ER_NO_SELECT_EXPRESSION = 46;
+//  public static final int ER_NO_SELECT_EXPRESSION = 46;
 
+    { ER_NO_SELECT_EXPRESSION,
+      "Error! Did not find xpath select expression (-select)."},
 
   /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
-  public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+//  public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
 
+    { ER_CANNOT_SERIALIZE_XSLPROCESSOR, 
+      "Can not serialize an XSLProcessor!"},
 
   /** ER_NO_INPUT_STYLESHEET          */
-  public static final int ER_NO_INPUT_STYLESHEET = 48;
+//  public static final int ER_NO_INPUT_STYLESHEET = 48;
 
+    { ER_NO_INPUT_STYLESHEET,
+      "Stylesheet input was not specified!"},
 
   /** ER_FAILED_PROCESS_STYLESHEET          */
-  public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+//  public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
 
+    { ER_FAILED_PROCESS_STYLESHEET,
+      "Failed to process stylesheet!"},
 
   /** ER_COULDNT_PARSE_DOC          */
-  public static final int ER_COULDNT_PARSE_DOC = 50;
+//  public static final int ER_COULDNT_PARSE_DOC = 50;
 
+    { ER_COULDNT_PARSE_DOC,       
+     "Could not parse {0} document!"},
 
   /** ER_COULDNT_FIND_FRAGMENT          */
-  public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+//  public static final int ER_COULDNT_FIND_FRAGMENT = 51;
 
+    { ER_COULDNT_FIND_FRAGMENT,
+     "Could not find fragment: {0}"},
 
   /** ER_NODE_NOT_ELEMENT          */
-  public static final int ER_NODE_NOT_ELEMENT = 52;
+ // public static final int ER_NODE_NOT_ELEMENT = 52;
 
+    { ER_NODE_NOT_ELEMENT,
+      "Node pointed to by fragment identifier was not an element: {0}"},
 
   /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
-  public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+//  public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
 
+    { ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each must have either a match or name attribute"},
 
   /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
-  public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+//  public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
 
+    { ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB, 
+      "templates must have either a match or name attribute"},
 
   /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
-  public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+//  public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
 
+    { ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "No clone of a document fragment!"},
 
   /** ER_CANT_CREATE_ITEM          */
-  public static final int ER_CANT_CREATE_ITEM = 56;
+//  public static final int ER_CANT_CREATE_ITEM = 56;
 
+    { ER_CANT_CREATE_ITEM,
+      "Can not create item in result tree: {0}"},
 
   /** ER_XMLSPACE_ILLEGAL_VALUE          */
-  public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+//  public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
 
+    { ER_XMLSPACE_ILLEGAL_VALUE,
+      "xml:space in the source XML has an illegal value: {0}"},
 
   /** ER_NO_XSLKEY_DECLARATION          */
-  public static final int ER_NO_XSLKEY_DECLARATION = 58;
+//  public static final int ER_NO_XSLKEY_DECLARATION = 58;
 
+    { ER_NO_XSLKEY_DECLARATION,
+      "There is no xsl:key declaration for {0}!"},
 
   /** ER_CANT_CREATE_URL          */
-  public static final int ER_CANT_CREATE_URL = 59;
+//  public static final int ER_CANT_CREATE_URL = 59;
 
+    { ER_CANT_CREATE_URL, 
+     "Error! Cannot create url for: {0}"},
 
   /** ER_XSLFUNCTIONS_UNSUPPORTED          */
-  public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+//  public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
 
+    { ER_XSLFUNCTIONS_UNSUPPORTED,
+     "xsl:functions is unsupported"},
 
   /** ER_PROCESSOR_ERROR          */
-  public static final int ER_PROCESSOR_ERROR = 61;
+//  public static final int ER_PROCESSOR_ERROR = 61;
 
+    { ER_PROCESSOR_ERROR, 
+     "XSLT TransformerFactory Error"},
 
   /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
-  public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+//  public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
 
+    { ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} not allowed inside a stylesheet!"},
 
   /** ER_RESULTNS_NOT_SUPPORTED          */
-  public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+//  public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
 
+    { ER_RESULTNS_NOT_SUPPORTED, 
+      "result-ns no longer supported!  Use xsl:output instead."},
 
   /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
-  public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+//  public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
 
+    { ER_DEFAULTSPACE_NOT_SUPPORTED, 
+      "default-space no longer supported!  Use xsl:strip-space or xsl:preserve-space instead."},
 
   /** ER_INDENTRESULT_NOT_SUPPORTED          */
-  public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+//  public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
 
+    { ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result no longer supported!  Use xsl:output instead."},
 
   /** ER_ILLEGAL_ATTRIB          */
-  public static final int ER_ILLEGAL_ATTRIB = 66;
+//  public static final int ER_ILLEGAL_ATTRIB = 66;
 
+    { ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} has an illegal attribute: {1}"},
 
   /** ER_UNKNOWN_XSL_ELEM          */
-  public static final int ER_UNKNOWN_XSL_ELEM = 67;
+//  public static final int ER_UNKNOWN_XSL_ELEM = 67;
 
+    { ER_UNKNOWN_XSL_ELEM,
+     "Unknown XSL element: {0}"},
 
   /** ER_BAD_XSLSORT_USE          */
-  public static final int ER_BAD_XSLSORT_USE = 68;
+//  public static final int ER_BAD_XSLSORT_USE = 68;
 
+    { ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort can only be used with xsl:apply-templates or xsl:for-each."},
 
   /** ER_MISPLACED_XSLWHEN          */
-  public static final int ER_MISPLACED_XSLWHEN = 69;
+//  public static final int ER_MISPLACED_XSLWHEN = 69;
 
+    { ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) misplaced xsl:when!"},
 
   /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
-  public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+//  public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
 
+    { ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when not parented by xsl:choose!"},
 
   /** ER_MISPLACED_XSLOTHERWISE          */
-  public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+//  public static final int ER_MISPLACED_XSLOTHERWISE = 71;
 
+    { ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) misplaced xsl:otherwise!"},
 
   /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
-  public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+//  public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
 
+    { ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise not parented by xsl:choose!"},
 
   /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
-  public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+//  public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
 
+    { ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} is not allowed inside a template!"},
 
   /** ER_UNKNOWN_EXT_NS_PREFIX          */
-  public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+//  public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
 
+    { ER_UNKNOWN_EXT_NS_PREFIX, 
+      "(StylesheetHandler) {0} extension namespace prefix {1} unknown"},
 
   /** ER_IMPORTS_AS_FIRST_ELEM          */
-  public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+//  public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
 
+    { ER_IMPORTS_AS_FIRST_ELEM, 
+      "(StylesheetHandler) Imports can only occur as the first elements in the stylesheet!"},
 
   /** ER_IMPORTING_ITSELF          */
-  public static final int ER_IMPORTING_ITSELF = 76;
+//  public static final int ER_IMPORTING_ITSELF = 76;
 
+    { ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} is directly or indirectly importing itself!"},
 
   /** ER_XMLSPACE_ILLEGAL_VAL          */
-  public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+//  public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
 
+    { ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space has an illegal value: {0}"},
 
   /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
-  public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+//  public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
 
+    { ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet not succesfull!"},
 
   /** ER_SAX_EXCEPTION          */
-  public static final int ER_SAX_EXCEPTION = 79;
+//  public static final int ER_SAX_EXCEPTION = 79;
 
+    { ER_SAX_EXCEPTION, 
+     "SAX Exception"},
 
   /** ER_FUNCTION_NOT_SUPPORTED          */
-  public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+//  public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
 
+    { ER_FUNCTION_NOT_SUPPORTED, 
+     "Function not supported!"},
 
   /** ER_XSLT_ERROR          */
-  public static final int ER_XSLT_ERROR = 81;
+//  public static final int ER_XSLT_ERROR = 81;
 
+    { ER_XSLT_ERROR,
+     "XSLT Error"},
 
   /** ER_CURRENCY_SIGN_ILLEGAL          */
-  public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+//  public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
 
+    { ER_CURRENCY_SIGN_ILLEGAL,
+      "currency sign is not allowed in format pattern string"},
 
   /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
-  public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+//  public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
 
+    { ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "Document function not supported in Stylesheet DOM!"},
 
   /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
-  public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+//  public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
 
+    { ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "Can't resolve prefix of non-Prefix resolver!"},
 
   /** ER_REDIRECT_COULDNT_GET_FILENAME          */
-  public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+//  public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
 
+    { ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Redirect extension: Could not get filename - file or select attribute must return vald string."},
 
   /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
-  public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+//  public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
 
+    { ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "Can not build FormatterListener in Redirect extension!"},
 
   /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
-  public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+//  public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
 
+    { ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "Prefix in exclude-result-prefixes is not valid: {0}"},
 
   /** ER_MISSING_NS_URI          */
-  public static final int ER_MISSING_NS_URI = 88;
+//  public static final int ER_MISSING_NS_URI = 88;
 
+    { ER_MISSING_NS_URI, 
+      "Missing namespace URI for specified prefix"},
 
   /** ER_MISSING_ARG_FOR_OPTION          */
-  public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+//  public static final int ER_MISSING_ARG_FOR_OPTION = 89;
 
+    { ER_MISSING_ARG_FOR_OPTION,
+      "Missing argument for option: {0}"},
 
   /** ER_INVALID_OPTION          */
-  public static final int ER_INVALID_OPTION = 90;
+//  public static final int ER_INVALID_OPTION = 90;
 
+    { ER_INVALID_OPTION,
+     "Invalid option: {0}"},
 
   /** ER_MALFORMED_FORMAT_STRING          */
-  public static final int ER_MALFORMED_FORMAT_STRING = 91;
+//  public static final int ER_MALFORMED_FORMAT_STRING = 91;
 
+    { ER_MALFORMED_FORMAT_STRING,
+     "Malformed format string: {0}"},
 
   /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
-  public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+//  public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
 
+    { ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet requires a 'version' attribute!"},
 
   /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
-  public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+//  public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
 
+    { ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "Attribute: {0} has an illegal value: {1}"},
 
   /** ER_CHOOSE_REQUIRES_WHEN          */
-  public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+//  public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
 
+    { ER_CHOOSE_REQUIRES_WHEN,
+     "xsl:choose requires an xsl:when"},
 
   /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
-  public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+//  public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
 
+    { ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports not allowed in a xsl:for-each"},
 
   /** ER_CANT_USE_DTM_FOR_OUTPUT          */
-  public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+//  public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
 
+    { ER_CANT_USE_DTM_FOR_OUTPUT,
+      "Cannot use a DTMLiaison for an output DOM node... pass a org.apache.xpath.DOM2Helper instead!"},
 
   /** ER_CANT_USE_DTM_FOR_INPUT          */
-  public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+//  public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
 
+    { ER_CANT_USE_DTM_FOR_INPUT,
+      "Cannot use a DTMLiaison for a input DOM node... pass a org.apache.xpath.DOM2Helper instead!"},
 
   /** ER_CALL_TO_EXT_FAILED          */
-  public static final int ER_CALL_TO_EXT_FAILED = 98;
+//  public static final int ER_CALL_TO_EXT_FAILED = 98;
 
+    { ER_CALL_TO_EXT_FAILED,
+      "Call to extension element failed: {0}"},
 
   /** ER_PREFIX_MUST_RESOLVE          */
-  public static final int ER_PREFIX_MUST_RESOLVE = 99;
+//  public static final int ER_PREFIX_MUST_RESOLVE = 99;
 
+    { ER_PREFIX_MUST_RESOLVE,
+      "Prefix must resolve to a namespace: {0}"},
 
   /** ER_INVALID_UTF16_SURROGATE          */
-  public static final int ER_INVALID_UTF16_SURROGATE = 100;
+//  public static final int ER_INVALID_UTF16_SURROGATE = 100;
 
+    { ER_INVALID_UTF16_SURROGATE,
+      "Invalid UTF-16 surrogate detected: {0} ?"},
 
   /** ER_XSLATTRSET_USED_ITSELF          */
-  public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+ // public static final int ER_XSLATTRSET_USED_ITSELF = 101;
 
+    { ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} used itself, which will cause an infinite loop."},
 
   /** ER_CANNOT_MIX_XERCESDOM          */
-  public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+//  public static final int ER_CANNOT_MIX_XERCESDOM = 102;
 
+    { ER_CANNOT_MIX_XERCESDOM,
+      "Can not mix non Xerces-DOM input with Xerces-DOM output!"},
 
   /** ER_TOO_MANY_LISTENERS          */
-  public static final int ER_TOO_MANY_LISTENERS = 103;
+//  public static final int ER_TOO_MANY_LISTENERS = 103;
 
+    { ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
 
   /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
-  public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+//  public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
 
+    { ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "In ElemTemplateElement.readObject: {0}"},
 
   /** ER_DUPLICATE_NAMED_TEMPLATE          */
-  public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+//  public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
 
+    { ER_DUPLICATE_NAMED_TEMPLATE,
+      "Found more than one template named: {0}"},
 
   /** ER_INVALID_KEY_CALL          */
-  public static final int ER_INVALID_KEY_CALL = 106;
+//  public static final int ER_INVALID_KEY_CALL = 106;
 
-  
+    { ER_INVALID_KEY_CALL,
+      "Invalid function call: recursive key() calls are not allowed"},
+
   /** Variable is referencing itself          */
-  public static final int ER_REFERENCING_ITSELF = 107;
+//  public static final int ER_REFERENCING_ITSELF = 107;
 
-  
+    { ER_REFERENCING_ITSELF,
+      "Variable {0} is directly or indirectly referencing itself!"},
+
   /** Illegal DOMSource input          */
-  public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+//  public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
 
-	
+    { ER_ILLEGAL_DOMSOURCE_INPUT,
+      "The input node can not be null for a DOMSource for newTemplates!"},
+
 	/** Class not found for option         */
-  public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+//  public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
 
-	
+    { ER_CLASS_NOT_FOUND_FOR_OPTION,
+	"Class file not found for option {0}"},
+
 	/** Required Element not found         */
-  public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+//  public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
 
-  
+    { ER_REQUIRED_ELEM_NOT_FOUND,
+	"Required Element not found: {0}"},
+
   /** InputStream cannot be null         */
-  public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+//  public static final int ER_INPUT_CANNOT_BE_NULL = 111;
 
-  
+    { ER_INPUT_CANNOT_BE_NULL,
+	"InputStream cannot be null"},
+
   /** URI cannot be null         */
-  public static final int ER_URI_CANNOT_BE_NULL = 112;
+//  public static final int ER_URI_CANNOT_BE_NULL = 112;
 
-  
+    { ER_URI_CANNOT_BE_NULL,
+	"URI cannot be null"},
+
   /** File cannot be null         */
-  public static final int ER_FILE_CANNOT_BE_NULL = 113;
+//  public static final int ER_FILE_CANNOT_BE_NULL = 113;
 
-  
+    { ER_FILE_CANNOT_BE_NULL,
+	"File cannot be null"},
+
    /** InputSource cannot be null         */
-  public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+//  public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
 
-  
+    { ER_SOURCE_CANNOT_BE_NULL,
+		"InputSource cannot be null"},
+
   /** Can't overwrite cause         */
-  public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+//  public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
 
-  
+    { ER_CANNOT_OVERWRITE_CAUSE,
+		"Cannot overwrite cause"},
+
   /** Could not initialize BSF Manager        */
-  public static final int ER_CANNOT_INIT_BSFMGR = 116;
+//  public static final int ER_CANNOT_INIT_BSFMGR = 116;
 
-  
+    { ER_CANNOT_INIT_BSFMGR,
+		"Could not initialize BSF Manager"},
+
   /** Could not compile extension       */
-  public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+//  public static final int ER_CANNOT_CMPL_EXTENSN = 117;
 
-  
+    { ER_CANNOT_CMPL_EXTENSN,
+		"Could not compile extension"},
+
   /** Could not create extension       */
-  public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+//  public static final int ER_CANNOT_CREATE_EXTENSN = 118;
 
-  
+    { ER_CANNOT_CREATE_EXTENSN,
+      "Could not create extension: {0} because of: {1}"},
+
   /** Instance method call to method {0} requires an Object instance as first argument       */
-  public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+//  public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
 
-  
+    { ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "Instance method call to method {0} requires an Object instance as first argument"},
+
   /** Invalid element name specified       */
-  public static final int ER_INVALID_ELEMENT_NAME = 120;
+//  public static final int ER_INVALID_ELEMENT_NAME = 120;
 
-  
+    { ER_INVALID_ELEMENT_NAME,
+      "Invalid element name specified {0}"},
+
    /** Element name method must be static      */
-  public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+//  public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
 
-  
+    { ER_ELEMENT_NAME_METHOD_STATIC,
+      "Element name method must be static {0}"},
+
    /** Extension function {0} : {1} is unknown      */
-  public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+//  public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
 
-  
+    { ER_EXTENSION_FUNC_UNKNOWN,
+             "Extension function {0} : {1} is unknown"},
+
    /** More than one best match for constructor for       */
-  public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+//  public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
 
-  
+    { ER_MORE_MATCH_CONSTRUCTOR,
+             "More than one best match for constructor for {0}"},
+
    /** More than one best match for method      */
-  public static final int ER_MORE_MATCH_METHOD = 124;
+//  public static final int ER_MORE_MATCH_METHOD = 124;
 
-  
+    { ER_MORE_MATCH_METHOD,
+             "More than one best match for method {0}"},
+
    /** More than one best match for element method      */
-  public static final int ER_MORE_MATCH_ELEMENT = 125;
+//  public static final int ER_MORE_MATCH_ELEMENT = 125;
 
-  
+    { ER_MORE_MATCH_ELEMENT,
+             "More than one best match for element method {0}"},
+
    /** Invalid context passed to evaluate       */
-  public static final int ER_INVALID_CONTEXT_PASSED = 126;
+//  public static final int ER_INVALID_CONTEXT_PASSED = 126;
 
-  
+    { ER_INVALID_CONTEXT_PASSED,
+             "Invalid context passed to evaluate {0}"},
+
    /** Pool already exists       */
-  public static final int ER_POOL_EXISTS = 127;
+//  public static final int ER_POOL_EXISTS = 127;
 
-  
+    { ER_POOL_EXISTS,
+             "Pool already exists"},
+
    /** No driver Name specified      */
-  public static final int ER_NO_DRIVER_NAME = 128;
+//  public static final int ER_NO_DRIVER_NAME = 128;
 
-  
+    { ER_NO_DRIVER_NAME,
+             "No driver Name specified"},
+
    /** No URL specified     */
-  public static final int ER_NO_URL = 129;
+//  public static final int ER_NO_URL = 129;
 
-  
+    { ER_NO_URL,
+             "No URL specified"},
+
    /** Pool size is less than one    */
-  public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+//  public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
 
-  
+    { ER_POOL_SIZE_LESSTHAN_ONE,
+             "Pool size is less than one!"},
+
    /** Invalid driver name specified    */
-  public static final int ER_INVALID_DRIVER = 131;
+//  public static final int ER_INVALID_DRIVER = 131;
 
-  
+    { ER_INVALID_DRIVER,
+             "Invalid driver name specified!"},
+
    /** Did not find the stylesheet root    */
-  public static final int ER_NO_STYLESHEETROOT = 132;
+//  public static final int ER_NO_STYLESHEETROOT = 132;
 
-  
+    { ER_NO_STYLESHEETROOT,
+             "Did not find the stylesheet root!"},
+
    /** Illegal value for xml:space     */
-  public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+//  public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
 
-  
+    { ER_ILLEGAL_XMLSPACE_VALUE,
+         "Illegal value for xml:space"},
+
    /** processFromNode failed     */
-  public static final int ER_PROCESSFROMNODE_FAILED = 134;
+//  public static final int ER_PROCESSFROMNODE_FAILED = 134;
 
-  
+    { ER_PROCESSFROMNODE_FAILED,
+         "processFromNode failed"},
+
    /** The resource [] could not load:     */
-  public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+//  public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
 
-   
-  
+    { ER_RESOURCE_COULD_NOT_LOAD,
+        "The resource [ {0} ] could not load: {1} \n {2} \t {3}"},
+
+
    /** Buffer size <=0     */
-  public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+//  public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
 
-  
+    { ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "Buffer size <=0"},
+
    /** Unknown error when calling extension    */
-  public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+//  public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
 
-  
+    { ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "Unknown error when calling extension"},
+
    /** Prefix {0} does not have a corresponding namespace declaration    */
-  public static final int ER_NO_NAMESPACE_DECL = 138;
+//  public static final int ER_NO_NAMESPACE_DECL = 138;
 
-  
+    { ER_NO_NAMESPACE_DECL,
+        "Prefix {0} does not have a corresponding namespace declaration"},
+
    /** Element content not allowed for lang=javaclass   */
-  public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+//  public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
 
-  
+    { ER_ELEM_CONTENT_NOT_ALLOWED,
+        "Element content not allowed for lang=javaclass {0}"},
+
    /** Stylesheet directed termination   */
-  public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+//  public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
 
-  
+    { ER_STYLESHEET_DIRECTED_TERMINATION,
+        "Stylesheet directed termination"},
+
    /** 1 or 2   */
-  public static final int ER_ONE_OR_TWO = 141;
+//  public static final int ER_ONE_OR_TWO = 141;
 
-  
+    { ER_ONE_OR_TWO,
+        "1 or 2"},
+
    /** 2 or 3   */
-  public static final int ER_TWO_OR_THREE = 142;
+//  public static final int ER_TWO_OR_THREE = 142;
 
-  
+    { ER_TWO_OR_THREE,
+        "2 or 3"},
+
    /** Could not load {0} (check CLASSPATH), now using just the defaults   */
-  public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+//  public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
 
-  
+    { ER_COULD_NOT_LOAD_RESOURCE,
+        "Could not load {0} (check CLASSPATH), now using just the defaults"},
+
    /** Cannot initialize default templates   */
-  public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+//  public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
 
-  
+    { ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "Cannot initialize default templates"},
+
    /** Result should not be null   */
-  public static final int ER_RESULT_NULL = 145;
+//  public static final int ER_RESULT_NULL = 145;
 
-    
+    { ER_RESULT_NULL,
+        "Result should not be null"},
+
    /** Result could not be set   */
-  public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+//  public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
 
-  
+    { ER_RESULT_COULD_NOT_BE_SET,
+        "Result could not be set"},
+
    /** No output specified   */
-  public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+//  public static final int ER_NO_OUTPUT_SPECIFIED = 147;
 
-  
+    { ER_NO_OUTPUT_SPECIFIED,
+        "No output specified"},
+
    /** Can't transform to a Result of type   */
-  public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+//  public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
 
-  
+    { ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "Can''t transform to a Result of type {0}"},
+
    /** Can't transform to a Source of type   */
-  public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+//  public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
 
-  
+    { ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "Can''t transform a Source of type {0}"},
+
    /** Null content handler  */
-  public static final int ER_NULL_CONTENT_HANDLER = 150;
+//  public static final int ER_NULL_CONTENT_HANDLER = 150;
 
-  
+    { ER_NULL_CONTENT_HANDLER,
+        "Null content handler"},
+
    /** Null error handler  */
-  public static final int ER_NULL_ERROR_HANDLER = 151;
+//  public static final int ER_NULL_ERROR_HANDLER = 151;
+    { ER_NULL_ERROR_HANDLER,
+        "Null error handler"},
 
-  
    /** parse can not be called if the ContentHandler has not been set */
-  public static final int ER_CANNOT_CALL_PARSE = 152;
+//  public static final int ER_CANNOT_CALL_PARSE = 152;
 
-  
+    { ER_CANNOT_CALL_PARSE,
+        "parse can not be called if the ContentHandler has not been set"},
+
    /**  No parent for filter */
-  public static final int ER_NO_PARENT_FOR_FILTER = 153;
+//  public static final int ER_NO_PARENT_FOR_FILTER = 153;
 
-  
-  
+    { ER_NO_PARENT_FOR_FILTER,
+        "No parent for filter"},
+
+
    /**  No stylesheet found in: {0}, media */
-  public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+//  public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
 
-  
+    { ER_NO_STYLESHEET_IN_MEDIA,
+         "No stylesheet found in: {0}, media= {1}"},
+
    /**  No xml-stylesheet PI found in */
-  public static final int ER_NO_STYLESHEET_PI = 155;
+//  public static final int ER_NO_STYLESHEET_PI = 155;
 
-  
+    { ER_NO_STYLESHEET_PI,
+         "No xml-stylesheet PI found in: {0}"},
+
    /**  No default implementation found */
-  public static final int ER_NO_DEFAULT_IMPL = 156;
+//  public static final int ER_NO_DEFAULT_IMPL = 156;
 
-  
+    { ER_NO_DEFAULT_IMPL,
+         "No default implementation found "},
+
    /**  ChunkedIntArray({0}) not currently supported */
-  public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+//  public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
 
-  
+    { ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0}) not currently supported"},
+
    /**  Offset bigger than slot */
-  public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+//  public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
 
-  
+    { ER_OFFSET_BIGGER_THAN_SLOT,
+       "Offset bigger than slot"},
+
    /**  Coroutine not available, id= */
-  public static final int ER_COROUTINE_NOT_AVAIL = 159;
+//  public static final int ER_COROUTINE_NOT_AVAIL = 159;
 
-  
+    { ER_COROUTINE_NOT_AVAIL,
+       "Coroutine not available, id={0}"},
+
    /**  CoroutineManager recieved co_exit() request */
-  public static final int ER_COROUTINE_CO_EXIT = 160;
+//  public static final int ER_COROUTINE_CO_EXIT = 160;
 
-  
+    { ER_COROUTINE_CO_EXIT,
+       "CoroutineManager received co_exit() request"},
+
    /**  co_joinCoroutineSet() failed */
-  public static final int ER_COJOINROUTINESET_FAILED = 161;
+//  public static final int ER_COJOINROUTINESET_FAILED = 161;
 
-  
+    { ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet() failed"},
+
    /**  Coroutine parameter error () */
-  public static final int ER_COROUTINE_PARAM = 162;
+//  public static final int ER_COROUTINE_PARAM = 162;
 
-  
+    { ER_COROUTINE_PARAM,
+       "Coroutine parameter error ({0})"},
+
    /**  UNEXPECTED: Parser doTerminate answers  */
-  public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+//  public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
 
-  
+    { ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: Parser doTerminate answers {0}"},
+
    /**  parse may not be called while parsing */
-  public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+//  public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
 
-  
+    { ER_NO_PARSE_CALL_WHILE_PARSING,
+       "parse may not be called while parsing"},
+
    /**  Error: typed iterator for axis  {0} not implemented  */
-  public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+//  public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
 
-  
+    { ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Error: typed iterator for axis  {0} not implemented"},
+
    /**  Error: iterator for axis {0} not implemented  */
-  public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+//  public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
 
-  
+    { ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Error: iterator for axis {0} not implemented "},
+
    /**  Iterator clone not supported  */
-  public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+//  public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
 
-  
+    { ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "Iterator clone not supported"},
+
    /**  Unknown axis traversal type  */
-  public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+//  public static final int ER_UNKNOWN_AXIS_TYPE = 168;
 
-  
+    { ER_UNKNOWN_AXIS_TYPE,
+       "Unknown axis traversal type: {0}"},
+
    /**  Axis traverser not supported  */
-  public static final int ER_AXIS_NOT_SUPPORTED = 169;
+//  public static final int ER_AXIS_NOT_SUPPORTED = 169;
 
-  
+    { ER_AXIS_NOT_SUPPORTED,
+       "Axis traverser not supported: {0}"},
+
    /**  No more DTM IDs are available  */
-  public static final int ER_NO_DTMIDS_AVAIL = 170;
+//  public static final int ER_NO_DTMIDS_AVAIL = 170;
 
-  
+    { ER_NO_DTMIDS_AVAIL,
+       "No more DTM IDs are available"},
+
    /**  Not supported  */
-  public static final int ER_NOT_SUPPORTED = 171;
+//  public static final int ER_NOT_SUPPORTED = 171;
 
-  
+    { ER_NOT_SUPPORTED,
+       "Not supported: {0}"},
+
    /**  node must be non-null for getDTMHandleFromNode  */
-  public static final int ER_NODE_NON_NULL = 172;
+//  public static final int ER_NODE_NON_NULL = 172;
 
-  
+    { ER_NODE_NON_NULL,
+       "Node must be non-null for getDTMHandleFromNode"},
+
    /**  Could not resolve the node to a handle  */
-  public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+//  public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
 
-  
+    { ER_COULD_NOT_RESOLVE_NODE,
+       "Could not resolve the node to a handle"},
+
    /**  startParse may not be called while parsing */
-  public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+//  public static final int ER_STARTPARSE_WHILE_PARSING = 174;
 
-  
+    { ER_STARTPARSE_WHILE_PARSING,
+       "startParse may not be called while parsing"},
+
    /**  startParse needs a non-null SAXParser  */
-  public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+//  public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
 
-  
+    { ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse needs a non-null SAXParser"},
+
    /**  could not initialize parser with */
-  public static final int ER_COULD_NOT_INIT_PARSER = 176;
+//  public static final int ER_COULD_NOT_INIT_PARSER = 176;
+    { ER_COULD_NOT_INIT_PARSER,
+       "could not initialize parser with"},
 
-  
    /**  Value for property {0} should be a Boolean instance  */
-  public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+//  public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
 
-  
+    { ER_PROPERTY_VALUE_BOOLEAN,
+       "Value for property {0} should be a Boolean instance"},
+
    /**  exception creating new instance for pool  */
-  public static final int ER_EXCEPTION_CREATING_POOL = 178;
+//  public static final int ER_EXCEPTION_CREATING_POOL = 178;
 
-  
+    { ER_EXCEPTION_CREATING_POOL,
+       "exception creating new instance for pool"},
+
    /**  Path contains invalid escape sequence  */
-  public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+//  public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
 
-  
+    { ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "Path contains invalid escape sequence"},
+
    /**  Scheme is required!  */
-  public static final int ER_SCHEME_REQUIRED = 180;
+//  public static final int ER_SCHEME_REQUIRED = 180;
 
-  
+    { ER_SCHEME_REQUIRED,
+       "Scheme is required!"},
+
    /**  No scheme found in URI  */
-  public static final int ER_NO_SCHEME_IN_URI = 181;
+//  public static final int ER_NO_SCHEME_IN_URI = 181;
 
-  
+    { ER_NO_SCHEME_IN_URI,
+       "No scheme found in URI: {0}"},
+
    /**  No scheme found in URI  */
-  public static final int ER_NO_SCHEME_INURI = 182;
+//  public static final int ER_NO_SCHEME_INURI = 182;
 
-  
+    { ER_NO_SCHEME_INURI,
+       "No scheme found in URI"},
+
    /**  Path contains invalid character:   */
-  public static final int ER_PATH_INVALID_CHAR = 183;
+//  public static final int ER_PATH_INVALID_CHAR = 183;
 
-  
+    { ER_PATH_INVALID_CHAR,
+       "Path contains invalid character: {0}"},
+
    /**  Cannot set scheme from null string  */
-  public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+//  public static final int ER_SCHEME_FROM_NULL_STRING = 184;
 
-  
+    { ER_SCHEME_FROM_NULL_STRING,
+       "Cannot set scheme from null string"},
+
    /**  The scheme is not conformant. */
-  public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+//  public static final int ER_SCHEME_NOT_CONFORMANT = 185;
 
-  
+    { ER_SCHEME_NOT_CONFORMANT,
+       "The scheme is not conformant."},
+
    /**  Host is not a well formed address  */
-  public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+//  public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
 
-  
+    { ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "Host is not a well formed address"},
+
    /**  Port cannot be set when host is null  */
-  public static final int ER_PORT_WHEN_HOST_NULL = 187;
+//  public static final int ER_PORT_WHEN_HOST_NULL = 187;
 
-  
+    { ER_PORT_WHEN_HOST_NULL,
+       "Port cannot be set when host is null"},
+
    /**  Invalid port number  */
-  public static final int ER_INVALID_PORT = 188;
+//  public static final int ER_INVALID_PORT = 188;
 
-  
+    { ER_INVALID_PORT,
+       "Invalid port number"},
+
    /**  Fragment can only be set for a generic URI  */
-  public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+//  public static final int ER_FRAG_FOR_GENERIC_URI = 189;
 
-  
+    { ER_FRAG_FOR_GENERIC_URI,
+       "Fragment can only be set for a generic URI"},
+
    /**  Fragment cannot be set when path is null  */
-  public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+//  public static final int ER_FRAG_WHEN_PATH_NULL = 190;
 
-  
+    { ER_FRAG_WHEN_PATH_NULL,
+       "Fragment cannot be set when path is null"},
+
    /**  Fragment contains invalid character  */
-  public static final int ER_FRAG_INVALID_CHAR = 191;
+//  public static final int ER_FRAG_INVALID_CHAR = 191;
 
-  
- 
-  
+    { ER_FRAG_INVALID_CHAR,
+       "Fragment contains invalid character"},
+
+
+
    /** Parser is already in use  */
-  public static final int ER_PARSER_IN_USE = 192;
+//  public static final int ER_PARSER_IN_USE = 192;
 
-  
+    { ER_PARSER_IN_USE,
+        "Parser is already in use"},
+
    /** Parser is already in use  */
-  public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+//  public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
 
-  
+    { ER_CANNOT_CHANGE_WHILE_PARSING,
+        "Cannot change {0} {1} while parsing"},
+
    /** Self-causation not permitted  */
-  public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+//  public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
 
-  
+    { ER_SELF_CAUSATION_NOT_PERMITTED,
+        "Self-causation not permitted"},
+
    /** src attribute not yet supported for  */
-  public static final int ER_COULD_NOT_FIND_EXTERN_SCRIPT = 195;
+//  public static final int ER_COULD_NOT_FIND_EXTERN_SCRIPT = 195;
 
-  
+    { ER_COULD_NOT_FIND_EXTERN_SCRIPT,
+         "Could not get to external script at {0}"},
+
   /** The resource [] could not be found     */
-  public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+//  public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
 
-  
+    { ER_RESOURCE_COULD_NOT_FIND,
+        "The resource [ {0} ] could not be found.\n {1}"},
+
    /** output property not recognized:  */
-  public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+//  public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
 
-  
+    { ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "Output property not recognized: {0}"},
+
    /** Userinfo may not be specified if host is not specified   */
-  public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+//  public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
 
-  
+    { ER_NO_USERINFO_IF_NO_HOST,
+        "Userinfo may not be specified if host is not specified"},
+
    /** Port may not be specified if host is not specified   */
-  public static final int ER_NO_PORT_IF_NO_HOST = 199;
+//  public static final int ER_NO_PORT_IF_NO_HOST = 199;
 
-  
+    { ER_NO_PORT_IF_NO_HOST,
+        "Port may not be specified if host is not specified"},
+
    /** Query string cannot be specified in path and query string   */
-  public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+//  public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
 
-  
+    { ER_NO_QUERY_STRING_IN_PATH, 
+        "Query string cannot be specified in path and query string"},
+
    /** Fragment cannot be specified in both the path and fragment   */
-  public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+//  public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
 
-  
+    { ER_NO_FRAGMENT_STRING_IN_PATH,
+        "Fragment cannot be specified in both the path and fragment"},
+
    /** Cannot initialize URI with empty parameters   */
-  public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+//  public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
 
-  
+    { ER_CANNOT_INIT_URI_EMPTY_PARMS, 
+        "Cannot initialize URI with empty parameters"},
+
    /** Failed creating ElemLiteralResult instance   */
-  public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+//  public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
 
-  
-   /** Value for {0} should contain a parsable number   */
-  public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+    { ER_FAILED_CREATING_ELEMLITRSLT,
+        "Failed creating ElemLiteralResult instance"},
 
+  //Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. 
 
-  
+   /** Priority value does not contain a parsable number   */
+//  public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+    { ER_VALUE_SHOULD_BE_NUMBER,
+        "Value for {0} should contain a parsable number"},
+
    /**  Value for {0} should equal 'yes' or 'no'   */
-  public static final int ER_VALUE_SHOULD_EQUAL = 205;
+//  public static final int ER_VALUE_SHOULD_EQUAL = 205;
 
- 
+    { ER_VALUE_SHOULD_EQUAL,
+        "Value for {0} should equal yes or no"},
+
    /**  Failed calling {0} method   */
-  public static final int ER_FAILED_CALLING_METHOD = 206;
+//  public static final int ER_FAILED_CALLING_METHOD = 206;
 
-  
+    { ER_FAILED_CALLING_METHOD,
+        "Failed calling {0} method"},
+
    /** Failed creating ElemLiteralResult instance   */
-  public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+//  public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
 
-  
+    { ER_FAILED_CREATING_ELEMTMPL,
+        "Failed creating ElemTemplateElement instance"},
+
    /**  Characters are not allowed at this point in the document   */
-  public static final int ER_CHARS_NOT_ALLOWED = 208;
+//  public static final int ER_CHARS_NOT_ALLOWED = 208;
 
-  
+    { ER_CHARS_NOT_ALLOWED,
+        "Characters are not allowed at this point in the document"},
+
   /**  attribute is not allowed on the element   */
-  public static final int ER_ATTR_NOT_ALLOWED = 209;
+//  public static final int ER_ATTR_NOT_ALLOWED = 209;
+    { ER_ATTR_NOT_ALLOWED,
+        "\"{0}\" attribute is not allowed on the {1} element!"},
 
-  
   /**  Method not yet supported    */
-  public static final int ER_METHOD_NOT_SUPPORTED = 210;
+//  public static final int ER_METHOD_NOT_SUPPORTED = 210;
 
- 
+    { ER_METHOD_NOT_SUPPORTED,
+        "Method not yet supported "},
+
   /**  Bad value    */
-  public static final int ER_BAD_VALUE = 211;
+//  public static final int ER_BAD_VALUE = 211;
 
-  
+    { ER_BAD_VALUE,
+     "{0} bad value {1} "},
+
   /**  attribute value not found   */
-  public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+//  public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
 
-  
+    { ER_ATTRIB_VALUE_NOT_FOUND,
+     "{0} attribute value not found "},
+
   /**  attribute value not recognized    */
-  public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+//  public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
 
+    { ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "{0} attribute value not recognized "},
 
   /** IncrementalSAXSource_Filter not currently restartable   */
-  public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+//  public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
 
-  
+    { ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter not currently restartable"},
+
   /** IncrementalSAXSource_Filter not currently restartable   */
-  public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+//  public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
 
-  
-  /** Attempting to generate a namespace prefix with a null URI   */
-  public static final int ER_NULL_URI_NAMESPACE = 216;
+    { ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader not before startParse request"},
 
-  
   /** Attempting to generate a namespace prefix with a null URI   */
-  public static final int ER_NUMBER_TOO_BIG = 217;
-  
+//  public static final int ER_NULL_URI_NAMESPACE = 216;
+
+    { ER_NULL_URI_NAMESPACE,
+     "Attempting to generate a namespace prefix with a null URI"},
+
+  //New ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+  /** Attempting to generate a namespace prefix with a null URI   */
+//  public static final int ER_NUMBER_TOO_BIG = 217;
+
+    { ER_NUMBER_TOO_BIG,
+     "Attempting to format a number bigger than the largest Long integer"},
+
+//ER_CANNOT_FIND_SAX1_DRIVER
+
+//  public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+    { ER_CANNOT_FIND_SAX1_DRIVER,
+     "Cannot find SAX1 driver class {0}"},
+
+//ER_SAX1_DRIVER_NOT_LOADED
+//  public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+    { ER_SAX1_DRIVER_NOT_LOADED,
+     "SAX1 driver class {0} found but cannot be loaded"},
+
+//ER_SAX1_DRIVER_NOT_INSTANTIATED
+//  public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+    { ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "SAX1 driver class {0} loaded but cannot be instantiated"},
+
+
+// ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+//  public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+    { ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "SAX1 driver class {0} does not implement org.xml.sax.Parser"},
+
+// ER_PARSER_PROPERTY_NOT_SPECIFIED
+//  public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+    { ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "System property org.xml.sax.parser not specified"},
+
+//ER_PARSER_ARG_CANNOT_BE_NULL
+//  public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+    { ER_PARSER_ARG_CANNOT_BE_NULL,
+     "Parser argument must not be null"},
+
+
+// ER_FEATURE
+//  public static final int  ER_FEATURE = 224;
+
+    { ER_FEATURE,
+     "Feature: {0}"},
+
+
+// ER_PROPERTY
+//  public static final int ER_PROPERTY = 225 ;
+
+    { ER_PROPERTY,
+     "Property: {0}"},
+
+// ER_NULL_ENTITY_RESOLVER
+//  public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+    { ER_NULL_ENTITY_RESOLVER,
+     "Null entity resolver"},
+
+// ER_NULL_DTD_HANDLER
+//  public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+    { ER_NULL_DTD_HANDLER,
+     "Null DTD handler"},
+
 // No Driver Name Specified!
-  public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+//  public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+    { ER_NO_DRIVER_NAME_SPECIFIED,
+     "No Driver Name Specified!"},
+
 
 // No URL Specified!
-  public static final int ER_NO_URL_SPECIFIED = 229; 
+//  public static final int ER_NO_URL_SPECIFIED = 229;
+    { ER_NO_URL_SPECIFIED,
+     "No URL Specified!"},
+
 
 // Pool size is less than 1!
-  public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+//  public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+    { ER_POOLSIZE_LESS_THAN_ONE,
+     "Pool size is less than 1!"},
+
 
 // Invalid Driver Name Specified!
-  public static final int ER_INVALID_DRIVER_NAME = 231;
+//  public static final int ER_INVALID_DRIVER_NAME = 231;
+    { ER_INVALID_DRIVER_NAME,
+     "Invalid Driver Name Specified!"},
+
+
 
 // ErrorListener
-  public static final int ER_ERRORLISTENER = 232;
+//  public static final int ER_ERRORLISTENER = 232;
+    { ER_ERRORLISTENER,
+     "ErrorListener"},
+
 
 // Programmer's error! expr has no ElemTemplateElement parent!
-  public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+//  public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+    { ER_ASSERT_NO_TEMPLATE_PARENT,
+     "Programmer's error! expr has no ElemTemplateElement parent!"},
 
-// Programmer's assertion in RundundentExprEliminator: {0}
-  public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+
+// Programmer''s assertion in RundundentExprEliminator: {0}
+//  public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+    { ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "Programmer''s assertion in RundundentExprEliminator: {0}"},
 
 // Axis traverser not supported: {0}
-  public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+//  public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+    { ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "Axis traverser not supported: {0}"},
 
 // ListingErrorHandler created with null PrintWriter!
-  public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+//  public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+    { ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "ListingErrorHandler created with null PrintWriter!"},
 
   // {0}is not allowed in this position in the stylesheet!
-  public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+//  public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+    { ER_NOT_ALLOWED_IN_POSITION,
+     "{0} is not allowed in this position in the stylesheet!"},
 
   // Non-whitespace text is not allowed in this position in the stylesheet!
-  public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
-  
+//  public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+    { ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "Non-whitespace text is not allowed in this position in the stylesheet!"},
+
   // This code is shared with warning codes.
   // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
-  public static final int INVALID_TCHAR = 239;
-  
+//  public static final int INVALID_TCHAR = 239;
   // SystemId Unknown
-  public static final int ER_SYSTEMID_UNKNOWN = 240;
-    
-  // Location of error unknown  
-  public static final int ER_LOCATION_UNKNOWN = 241;
-  
-  //The following codes are shared with the warning codes... 
+    { INVALID_TCHAR,
+     "Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!"},
+
+//  public static final int ER_SYSTEMID_UNKNOWN = 240;
+    { ER_SYSTEMID_UNKNOWN,
+     "SystemId Unknown"},
+
+  // Location of error unknown
+//  public static final int ER_LOCATION_UNKNOWN = 241;
+    { ER_LOCATION_UNKNOWN,
+     "Location of error unknown"},
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
   // Illegal value: {1} used for QNAME attribute: {0}
-  public static final int INVALID_QNAME = 242;   
-   
-  // Illegal value\u003a {1} used for ENUM attribute\u003a {0}.  Valid values are\u003a {2}.
-  public static final int INVALID_ENUM = 243;
-   
-  // Illegal value\u003a {1} used for NMTOKEN attribute\u003a {0}. 
-  public static final int INVALID_NMTOKEN = 244;
-      
-  // Illegal value\u003a {1} used for NCNAME attribute\u003a {0}. 
-  public static final int INVALID_NCNAME = 245;  
-   
-  // Illegal value\u003a {1} used for boolean attribute\u003a {0}. 
-  public static final int INVALID_BOOLEAN = 246;  
+//  public static final int INVALID_QNAME = 242;
+    { INVALID_QNAME,
+     "Illegal value: {1} used for QNAME attribute: {0}"},
 
-  // Illegal value\u003a {1} used for number attribute\u003a {0}. 
-  public static final int INVALID_NUMBER = 247;
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
 
-  
+  // Illegal value: {1} used for ENUM attribute: {0}.  Valid values are: {2}.
+//  public static final int INVALID_ENUM = 243;
+    { INVALID_ENUM,
+     "Illegal value: {1} used for ENUM attribute: {0}.  Valid values are: {2}."},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NMTOKEN
+
+  // Illegal value: {1} used for NMTOKEN attribute: {0}.
+//  public static final int INVALID_NMTOKEN = 244;
+    { INVALID_NMTOKEN,
+     "Illegal value: {1} used for NMTOKEN attribute: {0} "},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NCNAME
+
+  // Illegal value: {1} used for NCNAME attribute: {0}.
+//  public static final int INVALID_NCNAME = 245;
+    { INVALID_NCNAME,
+     "Illegal value: {1} used for NCNAME attribute: {0} "},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_BOOLEAN
+
+  // Illegal value: {1} used for boolean attribute: {0}.
+//  public static final int INVALID_BOOLEAN = 246;
+
+    { INVALID_BOOLEAN,
+     "Illegal value: {1} used for boolean attribute: {0} "},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value: {1} used for number attribute: {0}.
+//  public static final int INVALID_NUMBER = 247;
+     { INVALID_NUMBER,
+     "Illegal value: {1} used for number attribute: {0} "},
+
+
   // End of shared codes...
-  
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
   // Argument to {0} in match pattern must be a literal.
-  public static final int ER_ARG_LITERAL             = 248;
-  
+//  public static final int ER_ARG_LITERAL             = 248;
+    { ER_ARG_LITERAL,
+     "Argument to {0} in match pattern must be a literal."},
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
   // Duplicate global variable declaration.
-  public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
-  
+//  public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+    { ER_DUPLICATE_GLOBAL_VAR,
+     "Duplicate global variable declaration."},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
   // Duplicate variable declaration.
-  public static final int ER_DUPLICATE_VAR           = 250;
-  
+//  public static final int ER_DUPLICATE_VAR           = 250;
+    { ER_DUPLICATE_VAR,
+     "Duplicate variable declaration."},
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
   // xsl:template must have a name or match attribute (or both)
-  public static final int ER_TEMPLATE_NAME_MATCH     = 251;    
-  
-  // Prefix in exclude-result-prefixes is not valid\u003a {0}
-  public static final int ER_INVALID_PREFIX          = 252;
-  
+//  public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+    { ER_TEMPLATE_NAME_MATCH,
+     "xsl:template must have a name or match attribute (or both)"},
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid: {0}
+//  public static final int ER_INVALID_PREFIX          = 252;
+    { ER_INVALID_PREFIX,
+     "Prefix in exclude-result-prefixes is not valid: {0}"},
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
   // attribute-set named {0} does not exist
-  public static final int ER_NO_ATTRIB_SET           = 253;
+//  public static final int ER_NO_ATTRIB_SET           = 253;
+    { ER_NO_ATTRIB_SET,
+     "attribute-set named {0} does not exist"},
 
 
 
-  /*
-    /**  Cannot find SAX1 driver class    *
-  public static final int ER_CANNOT_FIND_SAX1_DRIVER = 190;
 
-  
-   /**  SAX1 driver class {0} found but cannot be loaded    *
-  public static final int ER_SAX1_DRIVER_NOT_LOADED = 191;
-
-  
-   /**  SAX1 driver class {0} found but cannot be instantiated    *
-  public static final int ER_SAX1_DRIVER_NOT_INSTANTIATED = 192;
-
-  
-   /**  SAX1 driver class {0} does not implement org.xml.sax.Parser    *
-  public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 193;
-
-  
-   /**  System property org.xml.sax.parser not specified    *
-  public static final int ER_PARSER_PROPERTY_NOT_SPECIFIED = 194;
-
-  
-   /**  Parser argument must not be null    *
-  public static final int ER_PARSER_ARG_CANNOT_BE_NULL = 195;
-
-  
-   /**  Feature:    *
-  public static final int ER_FEATURE = 196;
-
-  
-   /**  Property:    *
-  public static final int ER_PROPERTY = 197;
-
-  
-   /** Null Entity Resolver  *
-  public static final int ER_NULL_ENTITY_RESOLVER = 198;
-
-  
-   /** Null DTD handler  *
-  public static final int ER_NULL_DTD_HANDLER = 199;
-
-  
- */ 
-  
 
   // Warnings...
 
   /** WG_FOUND_CURLYBRACE          */
-  public static final int WG_FOUND_CURLYBRACE = 1;
-
+//  public static final int WG_FOUND_CURLYBRACE = 1;
+    { WG_FOUND_CURLYBRACE,
+      "Found '}' but no attribute template open!"},
 
   /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
-  public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+//  public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
 
+    { WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "Warning: count attribute does not match an ancestor in xsl:number! Target = {0}"},
 
   /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
-  public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+//  public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
 
+    { WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "Old syntax: The name of the 'expr' attribute has been changed to 'select'."},
 
   /** WG_NO_LOCALE_IN_FORMATNUMBER          */
-  public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+//  public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
 
+    { WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan doesn't yet handle the locale name in the format-number function."},
 
   /** WG_LOCALE_NOT_FOUND          */
-  public static final int WG_LOCALE_NOT_FOUND = 5;
+//  public static final int WG_LOCALE_NOT_FOUND = 5;
 
+    { WG_LOCALE_NOT_FOUND,
+      "Warning: Could not find locale for xml:lang={0}"},
 
   /** WG_CANNOT_MAKE_URL_FROM          */
-  public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+//  public static final int WG_CANNOT_MAKE_URL_FROM = 6;
 
+    { WG_CANNOT_MAKE_URL_FROM,
+      "Can not make URL from: {0}"},
 
   /** WG_CANNOT_LOAD_REQUESTED_DOC          */
-  public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+//  public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
 
+    { WG_CANNOT_LOAD_REQUESTED_DOC,
+      "Can not load requested doc: {0}"},
 
   /** WG_CANNOT_FIND_COLLATOR          */
-  public static final int WG_CANNOT_FIND_COLLATOR = 8;
-
+//  public static final int WG_CANNOT_FIND_COLLATOR = 8;
+    { WG_CANNOT_FIND_COLLATOR,
+      "Could not find Collator for <sort xml:lang={0}"},
 
   /** WG_FUNCTIONS_SHOULD_USE_URL          */
-  public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+//  public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
 
+    { WG_FUNCTIONS_SHOULD_USE_URL,
+      "Old syntax: the functions instruction should use a url of {0}"},
 
   /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
-  public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+//  public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
 
+    { WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "encoding not supported: {0}, using UTF-8"},
 
   /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
-  public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+//  public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
 
+    { WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "encoding not supported: {0}, using Java {1}"},
 
   /** WG_SPECIFICITY_CONFLICTS          */
-  public static final int WG_SPECIFICITY_CONFLICTS = 12;
+//  public static final int WG_SPECIFICITY_CONFLICTS = 12;
 
+    { WG_SPECIFICITY_CONFLICTS,
+      "Specificity conflicts found: {0} Last found in stylesheet will be used."},
 
   /** WG_PARSING_AND_PREPARING          */
-  public static final int WG_PARSING_AND_PREPARING = 13;
+//  public static final int WG_PARSING_AND_PREPARING = 13;
 
+    { WG_PARSING_AND_PREPARING,
+      "========= Parsing and preparing {0} =========="},
 
   /** WG_ATTR_TEMPLATE          */
-  public static final int WG_ATTR_TEMPLATE = 14;
+//  public static final int WG_ATTR_TEMPLATE = 14;
 
+    { WG_ATTR_TEMPLATE,
+     "Attr Template, {0}"},
 
   /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
-  public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE =
-    15;
+//  public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
 
+    { WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "Match conflict between xsl:strip-space and xsl:preserve-space"},
 
   /** WG_ATTRIB_NOT_HANDLED          */
-  public static final int WG_ATTRIB_NOT_HANDLED = 16;
+//  public static final int WG_ATTRIB_NOT_HANDLED = 16;
 
+    { WG_ATTRIB_NOT_HANDLED,
+      "Xalan does not yet handle the {0} attribute!"},
 
   /** WG_NO_DECIMALFORMAT_DECLARATION          */
-  public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+//  public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
 
+    { WG_NO_DECIMALFORMAT_DECLARATION,
+      "No declaration found for decimal format: {0}"},
 
   /** WG_OLD_XSLT_NS          */
-  public static final int WG_OLD_XSLT_NS = 18;
+//  public static final int WG_OLD_XSLT_NS = 18;
 
+    { WG_OLD_XSLT_NS,
+     "Missing or incorrect XSLT Namespace. "},
 
   /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
-  public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+//  public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
 
+    { WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "Only one default xsl:decimal-format declaration is allowed."},
 
   /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
-  public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+//  public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
 
+    { WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-format names must be unique. Name \"{0}\" has been duplicated."},
 
   /** WG_ILLEGAL_ATTRIBUTE          */
-  public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
 
+    { WG_ILLEGAL_ATTRIBUTE,
+      "{0} has an illegal attribute: {1}"},
 
   /** WG_COULD_NOT_RESOLVE_PREFIX          */
-  public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+//  public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
 
+    { WG_COULD_NOT_RESOLVE_PREFIX,
+      "Could not resolve namespace prefix: {0}. The node will be ignored."},
 
   /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
-  public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
-
+//  public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+    { WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet requires a 'version' attribute!"},
 
   /** WG_ILLEGAL_ATTRIBUTE_NAME          */
-  public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+//  public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
 
+    { WG_ILLEGAL_ATTRIBUTE_NAME,
+      "Illegal attribute name: {0}"},
 
   /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
-  public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
-
+//  public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+    { WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "Illegal value used for attribute {0}: {1}"},
 
   /** WG_EMPTY_SECOND_ARG          */
-  public static final int WG_EMPTY_SECOND_ARG = 26;
-  
-  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
-  public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
-  
-  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
-  public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;  
-  
-  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
-  public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
-  
-  
-  //The following warning codes are shared with the error codes ... 
-  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
-  public static final int WG_INVALID_TCHAR = 239;
-  
-  
-  // Illegal value: {1} used for QNAME attribute: {0}
-  public static final int WG_INVALID_QNAME = 242;
-  
-   
-  // Illegal value\u003a {1} used for ENUM attribute\u003a {0}.  Valid values are\u003a {2}.
-  public static final int WG_INVALID_ENUM = 243;
-  
-   
-  // Illegal value\u003a {1} used for NMTOKEN attribute\u003a {0}. 
-  public static final int WG_INVALID_NMTOKEN = 244;
-  
-      
-  // Illegal value\u003a {1} used for NCNAME attribute\u003a {0}. 
-  public static final int WG_INVALID_NCNAME = 245;
-  
-   
-  // Illegal value\u003a {1} used for boolean attribute\u003a {0}. 
-  public static final int WG_INVALID_BOOLEAN = 246;
-  
+//  public static final int WG_EMPTY_SECOND_ARG = 26;
 
-  // Illegal value\u003a {1} used for number attribute\u003a {0}. 
-  public static final int WG_INVALID_NUMBER = 247;
-  // End of codes that are shared...
+    { WG_EMPTY_SECOND_ARG,
+      "Resulting nodeset from second argument of document function is empty. The first agument will be used."},
+
+  //Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+//  public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+    { WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "The value of the 'name' attribute of xsl:processing-instruction name must not be 'xml'"},
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+//  public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+    { WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "The value of the 'name' attribute of xsl:processing-instruction must be a valid NCName: {0}"},
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+//  public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+    { WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "Cannot add attribute {0} after child nodes or before an element is produced.  Attribute will be ignored."},
+
+    //Check: WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
 
   // Other miscellaneous text used inside the code...
+  { "ui_language", "en"},
+  {  "help_language",  "en" },
+  {  "language",  "en" },
+  { "BAD_CODE", "Parameter to createMessage was out of bounds"},
+  {  "FORMAT_FAILED", "Exception thrown during messageFormat call"},
+  {  "version", ">>>>>>> Xalan Version "},
+  {  "version2",  "<<<<<<<"},
+  {  "yes", "yes"},
+  { "line", "Line #"},
+  { "column","Column #"},
+  { "xsldone", "XSLProcessor: done"},
+
+
+  // Note to translators:  The following messages provide usage information
+  // for the Xalan Process command line.  "Process" is the name of a Java class,
+  // and should not be translated.
+  { "xslProc_option", "Xalan-J command line Process class options:"},
+  { "xslProc_option", "Xalan-J command line Process class options\u003a"},
+  { "xslProc_invalid_xsltc_option", "The option {0} is not supported in XSLTC mode."},
+  { "xslProc_invalid_xalan_option", "The option {0} can only be used with -XSLTC."},
+  { "xslProc_no_input", "Error: No stylesheet or input xml is specified. Run this command without any option for usage instructions."},
+  { "xslProc_common_options", "-Common Options-"},
+  { "xslProc_xalan_options", "-Options for Xalan-"},
+  { "xslProc_xsltc_options", "-Options for XSLTC-"},
+  { "xslProc_return_to_continue", "(press <return> to continue)"},
+
+   // Note to translators: The option name and the parameter name do not need to
+   // be translated. Only translate the messages in parentheses.  Note also that
+   // leading whitespace in the messages is used to indent the usage information
+   // for each option in the English messages.
+   // Do not translate the keywords: XSLTC, SAX, DOM and DTM.
+  { "optionXSLTC", "   [-XSLTC (use XSLTC for transformation)]"},
+  { "optionIN", "   [-IN inputXMLURL]"},
+  { "optionXSL", "   [-XSL XSLTransformationURL]"},
+  { "optionOUT",  "   [-OUT outputFileName]"},
+  { "optionLXCIN", "   [-LXCIN compiledStylesheetFileNameIn]"},
+  { "optionLXCOUT", "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+  { "optionPARSER", "   [-PARSER fully qualified class name of parser liaison]"},
+  {  "optionE", "   [-E (Do not expand entity refs)]"},
+  {  "optionV",  "   [-E (Do not expand entity refs)]"},
+  {  "optionQC", "   [-QC (Quiet Pattern Conflicts Warnings)]"},
+  {  "optionQ", "   [-Q  (Quiet Mode)]"},
+  {  "optionLF", "   [-LF (Use linefeeds only on output {default is CR/LF})]"},
+  {  "optionCR", "   [-CR (Use carriage returns only on output {default is CR/LF})]"},
+  { "optionESCAPE", "   [-ESCAPE (Which characters to escape {default is <>&\"\'\\r\\n}]"},
+  { "optionINDENT", "   [-INDENT (Control how many spaces to indent {default is 0})]"},
+  { "optionTT", "   [-TT (Trace the templates as they are being called.)]"},
+  { "optionTG", "   [-TG (Trace each generation event.)]"},
+  { "optionTS", "   [-TS (Trace each selection event.)]"},
+  {  "optionTTC", "   [-TTC (Trace the template children as they are being processed.)]"},
+  { "optionTCLASS", "   [-TCLASS (TraceListener class for trace extensions.)]"},
+  { "optionVALIDATE", "   [-VALIDATE (Set whether validation occurs.  Validation is off by default.)]"},
+  { "optionEDUMP", "   [-EDUMP {optional filename} (Do stackdump on error.)]"},
+  {  "optionXML", "   [-XML (Use XML formatter and add XML header.)]"},
+  {  "optionTEXT", "   [-TEXT (Use simple Text formatter.)]"},
+  {  "optionHTML", "   [-HTML (Use HTML formatter.)]"},
+  {  "optionPARAM", "   [-PARAM name expression (Set a stylesheet parameter)]"},
+  {  "noParsermsg1", "XSL Process was not successful."},
+  {  "noParsermsg2", "** Could not find parser **"},
+  { "noParsermsg3",  "Please check your classpath."},
+  { "noParsermsg4", "If you don't have IBM's XML Parser for Java, you can download it from"},
+  { "noParsermsg5", "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+  { "optionURIRESOLVER", "   [-URIRESOLVER full class name (URIResolver to be used to resolve URIs)]"},
+  { "optionENTITYRESOLVER",  "   [-ENTITYRESOLVER full class name (EntityResolver to be used to resolve entities)]"},
+  { "optionCONTENTHANDLER",  "   [-CONTENTHANDLER full class name (ContentHandler to be used to serialize output)]"},
+  {  "optionLINENUMBERS",  "   [-L use line numbers for source document]"},
+
+    // Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+  {  "optionMEDIA",  "   [-MEDIA mediaType (use media attribute to find stylesheet associated with a document.)]"},
+  {  "optionFLAVOR",  "   [-FLAVOR flavorName (Explicitly use s2s=SAX or d2d=DOM to do transform.)] "}, // Added by sboag/scurcuru; experimental
+  { "optionDIAG", "   [-DIAG (Print overall milliseconds transform took.)]"},
+  { "optionINCREMENTAL",  "   [-INCREMENTAL (request incremental DTM construction by setting http://xml.apache.org/xalan/features/incremental true.)]"},
+  {  "optionNOOPTIMIMIZE",  "   [-NOOPTIMIMIZE (request no stylesheet optimization proccessing by setting http://xml.apache.org/xalan/features/optimize false.)]"},
+  { "optionRL",  "   [-RL recursionlimit (assert numeric limit on stylesheet recursion depth.)]"},
+  {   "optionXO",  "   [-XO [transletName] (assign the name to the generated translet)]"},
+  {  "optionXD", "   [-XD destinationDirectory (specify a destination directory for translet)]"},
+  {  "optionXJ",  "   [-XJ jarfile (packages translet classes into a jar file of name <jarfile>)]"},
+  {   "optionXP",  "   [-XP package (specifies a package name prefix for all generated translet classes)]"},
+
+  //AddITIONAL  STRINGS that need L10n
+  // Note to translators:  The following message describes usage of a particular
+  // command-line option that is used to enable the "template inlining"
+  // optimization.  The optimization involves making a copy of the code
+  // generated for a template in another template that refers to it.
+  { "optionXN",  "   [-XN (enables template inlining)]" },
+  { "optionXX",  "   [-XX (turns on additional debugging message output)]"},
+  { "optionXT" , "   [-XT (use translet to transform if possible)]"},
+  { "diagTiming"," --------- Transform of {0} via {1} took {2} ms" },
+  { "recursionTooDeep","Template nesting too deep. nesting = {0}, template {1} {2}" },
+  { "nameIs", "name is" },
+  { "matchPatternIs", "match pattern is" }
+
+  };
 
   // ================= INFRASTRUCTURE ======================
 
@@ -1293,25 +2523,25 @@
    * @deprecated  */
   public static final String QUERY_HEADER = "PATTERN ";
 
-//  /**
-//   * Get the lookup table. 
-//   *
-//   * @return The int to message lookup table.
-//   */
-//  public Object[][] getContents()
-//  {
-//    return contents;
-//  }
+  /**
+   * Get the lookup table.
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
 
   /**
    *   Return a named ResourceBundle for a particular locale.  This method mimics the behavior
    *   of ResourceBundle.getBundle().
-   *  
+   *
    *   @param className the name of the class that implements the resource bundle.
    *   @return the ResourceBundle
    *   @throws MissingResourceException
    */
-  public static final ResourceBundle loadResourceBundle(String className)
+  public static final XSLTErrorResources loadResourceBundle(String className)
           throws MissingResourceException
   {
 
@@ -1322,9 +2552,9 @@
     {
 
       // first try with the given locale
-      return ResourceBundle.getBundle(className
+      return (XSLTErrorResources) ResourceBundle.getBundle(className
               + suffix, locale);
-    } 
+    }
     catch (MissingResourceException e)
     {
       try  // try to fall back to en_US if we can't load
@@ -1332,7 +2562,7 @@
 
         // Since we can't find the localized property file,
         // fall back to en_US.
-        return ResourceBundle.getBundle(className,
+        return (XSLTErrorResources) ResourceBundle.getBundle(className,
                 new Locale("en", "US"));
       }
       catch (MissingResourceException e2)
@@ -1366,86 +2596,5 @@
     return suffix;
   }
 
-  /**
-   * Get a string representation of the error code.
-   *
-   * @param errorCode Should be a valid error code less than {@link #MAX_CODE}.
-   *
-   * @return A string representation of the error code, or null if code is 
-   * greater than MAX_CODE.
-   */
-  public static String getMessageKey(int errorCode)
-  {
 
-//    if (errorCode > MAX_CODE)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return ERROR_SUFFIX + df.format(errorCode);
-    }
-  }
-
-  /**
-   * Get a string representation of the warning code.
-   *
-   * @param errorCode Should be a valid warning code less than {@link #MAX_WARNING}.
-   *
-   * @return A string representation of the warning code, or null if code is 
-   * greater than MAX_WARNING.
-   */
-  public static String getWarningKey(int errorCode)
-  {
-
-//    if (errorCode > MAX_WARNING)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return WARNING_SUFFIX + df.format(errorCode);
-    }
-  }
-
-  /**
-   * Get a string representation of the message code. (same as getMessageKey).
-   *
-   * @param errorCode Should be a valid error code less than {@link #MAX_CODE}.
-   *
-   * @return A string representation of the error code, or null if code is 
-   * greater than MAX_CODE.
-   */
-  public static String getMKey(int errorCode)
-  {
-//    if (errorCode > MAX_CODE)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return ERROR_SUFFIX + df.format(errorCode);
-    }
-  }
-
-  /**
-   * Get a string representation of the warning code.
-   *
-   * @param errorCode Should be a valid warning code less than {@link #MAX_WARNING}.
-   *
-   * @return A string representation of the warning code, or null if code is 
-   * greater than MAX_WARNING.
-   */
-  public static String getWKey(int errorCode)
-  {
-
-//    if (errorCode > MAX_WARNING)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return WARNING_SUFFIX + df.format(errorCode);
-    }
-  }
 }
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_de.java b/src/org/apache/xalan/res/XSLTErrorResources_de.java
new file mode 100644
index 0000000..a16faec
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_de.java
@@ -0,0 +1,2280 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+
+public class XSLTErrorResources_de extends XSLTErrorResources
+{
+
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;
+
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  /** The lookup table for error messages.   */
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+    { "ERROR0000", "{0}"},
+
+  /** ER_NO_CURLYBRACE          */
+//  public static final int ER_NO_CURLYBRACE = 1;
+
+  {
+    ER_NO_CURLYBRACE,
+      "Fehler: '{' in Ausdruck nicht zul\u00e4ssig"},
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+//  public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+  {
+    ER_ILLEGAL_ATTRIBUTE,
+	"{0} hat ein unzul\u00e4ssiges Attribut: {1}"},
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+//  public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "sourceNode ist Null in xsl:apply-imports!"},
+
+  /** ER_CANNOT_ADD          */
+//  public static final int ER_CANNOT_ADD = 4;
+
+  {
+    ER_CANNOT_ADD,
+	"{0} kann {1} nicht hinzugef\u00fcgt werden"},
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+//  public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "sourceNode ist Null in handleApplyTemplatesInstruction!"},
+
+  /** ER_NO_NAME_ATTRIB          */
+//  public static final int ER_NO_NAME_ATTRIB = 6;
+
+  {
+    ER_NO_NAME_ATTRIB,
+	"{0} muss ein ''name''-Attribut haben."},
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+//  public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+  {
+    ER_TEMPLATE_NOT_FOUND,
+	"Vorlage konnte nicht gefunden werden: {0}"},
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+//  public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "AVT-Name in xsl:call-template konnte nicht aufgel\u00f6st werden."},
+
+  /** ER_REQUIRES_ATTRIB          */
+//  public static final int ER_REQUIRES_ATTRIB = 9;
+
+  {
+    ER_REQUIRES_ATTRIB,
+	"{0} erfordert Attribut: {1}"},
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+//  public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} muss ein ''test''-Attribut haben."},
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+//  public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "Ung\u00fcltiger Wert des ''level''-Attributs: {0}"},
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+//  public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "processing-instruction-Name kann nicht 'xml' sein"},
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+//  public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "processing-instruction-Name muss ein g\u00fcltiger NCName sein: {0}"},
+
+  /** ER_NEED_MATCH_ATTRIB          */
+//  public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0} muss ein ''match''-Attribut haben, falls ein Modus angegeben ist."},
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+//  public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} erfordert entweder ein ''name''- oder ein ''match''-Attribut."},
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+//  public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "Namensraum-Pr\u00e4fix kann nicht aufgel\u00f6st werden: {0}"},
+
+  /** ER_ILLEGAL_VALUE          */
+//  public static final int ER_ILLEGAL_VALUE = 17;
+
+  {
+    ER_ILLEGAL_VALUE,
+	 "xml:space hat unzul\u00e4ssigen Wert: {0}"},
+
+  /** ER_NO_OWNERDOC          */
+//  public static final int ER_NO_OWNERDOC = 18;
+
+  {
+    ER_NO_OWNERDOC,
+      "Tochterknoten hat kein Eigent\u00fcmer-Dokument!"},
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+//  public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR,
+	"ElemTemplateElement-Fehler: {0}"},
+
+  /** ER_NULL_CHILD          */
+//  public static final int ER_NULL_CHILD = 20;
+
+  {
+    ER_NULL_CHILD,
+ 	"Versuch, einen Null-Tochterknoten hinzuzuf\u00fcgen!"},
+
+  /** ER_NEED_SELECT_ATTRIB          */
+//  public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+  {
+    ER_NEED_SELECT_ATTRIB,
+	"{0} erfordert ein ''select''-Attribut."},
+
+  /** ER_NEED_TEST_ATTRIB          */
+//  public static final int ER_NEED_TEST_ATTRIB = 22;
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when muss ein 'test'-Attribut haben."},
+
+  /** ER_NEED_NAME_ATTRIB          */
+//  public static final int ER_NEED_NAME_ATTRIB = 23;
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param muss ein 'name'-Attribut haben."},
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+//  public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "Kontext hat kein Eigent\u00fcmer-Dokument!"},
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+//  public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "XML TransformerFactory Liaison konnte nicht erstellt werden: {0}"},
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+//  public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: Prozess fehlgeschlagen."},
+
+  /** ER_NOT_SUCCESSFUL          */
+//  public static final int ER_NOT_SUCCESSFUL = 27;
+
+  {
+    ER_NOT_SUCCESSFUL,
+	"Xalan: fehlgeschlagen."},
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+//  public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+  {
+    ER_ENCODING_NOT_SUPPORTED,
+	"Codierung nicht unterst\u00fctzt: {0}"},
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+//  public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "TraceListener konnte nicht erstellt werden: {0}"},
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+//  public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key erfordert ein 'name'-Attribut!"},
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+//  public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key erfordert ein 'match'-Attribut!"},
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+//  public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key erfordert ein 'use'-Attribut!"},
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+//  public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} erfordert ein ''elements''-Attribut!"},
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+//  public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} ''prefix''-Attribut fehlt"},
+
+  /** ER_BAD_STYLESHEET_URL          */
+//  public static final int ER_BAD_STYLESHEET_URL = 35;
+
+  {
+    ER_BAD_STYLESHEET_URL,
+	"Stylesheet-URL ung\u00fcltig: {0}"},
+
+  /** ER_FILE_NOT_FOUND          */
+//  public static final int ER_FILE_NOT_FOUND = 36;
+
+  {
+    ER_FILE_NOT_FOUND,
+	"Stylesheet-Datei nicht gefunden: {0}"},
+
+  /** ER_IOEXCEPTION          */
+//  public static final int ER_IOEXCEPTION = 37;
+
+  {
+    ER_IOEXCEPTION,
+      "IO-Ausnahme bei Stylesheet-Datei: {0}"},
+
+  /** ER_NO_HREF_ATTRIB          */
+//  public static final int ER_NO_HREF_ATTRIB = 38;
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) ''href''-Attribut f\u00fcr {0} nicht gefunden"},
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+//  public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} schlie\u00dft sich selbst direkt oder indirekt ein!"},
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+//  public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude-Fehler, {0}"},
+
+  /** ER_MISSING_LANG_ATTRIB          */
+//  public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} ''lang''-Attribut fehlt"},
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+//  public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) Element {0} an falscher Position?? Containerelement ''component'' fehlt"},
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+//  public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "Ausgabe nur m\u00f6glich in Element, DocumentFragment, Document oder PrintWriter."},
+
+  /** ER_PROCESS_ERROR          */
+//  public static final int ER_PROCESS_ERROR = 44;
+
+  {
+    ER_PROCESS_ERROR,
+	"StylesheetRoot.process-Fehler"},
+
+  /** ER_UNIMPLNODE_ERROR          */
+//  public static final int ER_UNIMPLNODE_ERROR = 45;
+
+  {
+    ER_UNIMPLNODE_ERROR,
+	"UnImplNode-Fehler: {0}"},
+
+  /** ER_NO_SELECT_EXPRESSION          */
+//  public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "Fehler! 'select'-Ausdruck bei xpath nicht gefunden (-select)."},
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+//  public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "Ein XSLProcessor kann nicht serialisiert werden!"},
+
+  /** ER_NO_INPUT_STYLESHEET          */
+//  public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "Stylesheet-Eingabe nicht angegeben!"},
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+//  public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "Stylesheet konnte nicht verarbeitet werden!"},
+
+  /** ER_COULDNT_PARSE_DOC          */
+//  public static final int ER_COULDNT_PARSE_DOC = 50;
+
+  {
+    ER_COULDNT_PARSE_DOC,
+	"Dokument {0} konnte nicht geparst werden!"},
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+//  public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+  {
+    ER_COULDNT_FIND_FRAGMENT,
+	"Fragment nicht gefunden: {0}"},
+
+  /** ER_NODE_NOT_ELEMENT          */
+//  public static final int ER_NODE_NOT_ELEMENT = 52;
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "Knoten, auf den von einem Fragmentbezeichner gezeigt wird, war kein Element: {0}"},
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+//  public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each muss ein 'match'- oder 'name'-Attribut haben"},
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+//  public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "Vorlagen m\u00fcssen ein 'match'- oder 'name'-Attribut haben"},
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+//  public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "Kein Klone eines Dokument-Fragments!"}, 
+
+  /** ER_CANT_CREATE_ITEM          */
+//  public static final int ER_CANT_CREATE_ITEM = 56;
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "Element im Ergebnisbaum kann nicht erstellt werden: {0}"},
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+//  public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "xml:space in der Quell-XML hat einen ung\u00fcltigen Wert: {0}"},
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+//  public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "Keine xsl:key-Vereinbarung f\u00fcr {0} vorhanden!"},
+
+  /** ER_CANT_CREATE_URL          */
+//  public static final int ER_CANT_CREATE_URL = 59;
+
+  {
+    ER_CANT_CREATE_URL,
+	"Fehler! URL kann nicht erstellt werden f\u00fcr: {0}"},
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+//  public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED,
+	 "xsl:functions nicht unterst\u00fctzt"},
+
+  /** ER_PROCESSOR_ERROR          */
+//  public static final int ER_PROCESSOR_ERROR = 61;
+
+  {
+    ER_PROCESSOR_ERROR, "XSLT TransformerFactory-Fehler"},
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+//  public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} in einem Stylesheet nicht zul\u00e4ssig!"},
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+//  public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "result-ns nicht mehr unterst\u00fctzt! Verwenden Sie statt dessen xsl:output."},
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+//  public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "default-space nicht mehr unterst\u00fctzt! Verwenden Sie statt dessen xsl:strip-space oder xsl:preserve-space."},
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+//  public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result nicht mehr unterst\u00fctzt! Verwenden Sie statt dessen xsl:output."},
+
+  /** ER_ILLEGAL_ATTRIB          */
+//  public static final int ER_ILLEGAL_ATTRIB = 66;
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} hat ein ung\u00fcltiges Attribut: {1}"},
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+//  public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "Ungekanntes XSL-Element: {0}"},
+
+  /** ER_BAD_XSLSORT_USE          */
+//  public static final int ER_BAD_XSLSORT_USE = 68;
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort kann nur mit xsl:apply-templates oder xsl:for-each verwendet werden."},
+
+  /** ER_MISPLACED_XSLWHEN          */
+//  public static final int ER_MISPLACED_XSLWHEN = 69;
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) xsl:when an falscher Position!"},
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+//  public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when ohne \u00fcbergeordnetes xsl:choose!"},
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+//  public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) xsl:otherwise an falscher Position!"},
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+//  public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise ohne \u00fcbergeordnetes xsl:choose!"},
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+//  public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} in einer Vorlage nicht zul\u00e4ssig!"},
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+//  public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) Namensraum-Pr\u00e4fix {1} der Dateierweiterung {0} unbekannt"},
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+//  public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) Importe nur als erste Elemente im Stylesheet m\u00f6glich!"},
+
+  /** ER_IMPORTING_ITSELF          */
+//  public static final int ER_IMPORTING_ITSELF = 76;
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} schlie\u00dft sich selbst direkt oder indirekt ein!"},
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+//  public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space hat ung\u00fcltigen Wert: {0}"},
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+//  public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet fehlgeschlagen!"},
+
+  /** ER_SAX_EXCEPTION          */
+//  public static final int ER_SAX_EXCEPTION = 79;
+
+  {
+    ER_SAX_EXCEPTION, "SAX-Ausnahme"},
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+//  public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "Funktion nicht unterst\u00fctzt!"},
+
+  /** ER_XSLT_ERROR          */
+//  public static final int ER_XSLT_ERROR = 81;
+
+  {
+    ER_XSLT_ERROR, "XSLT-Fehler"},
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+//  public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "W\u00e4hrungszeichen in Formatierungsmuster nicht zul\u00e4ssig"},
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+//  public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "document-Funktion in Stylesheet-DOM nicht unterst\u00fctzt!"},
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+//  public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "Pr\u00e4fix von Nicht-Pr\u00e4fix-Resolver kann nicht aufgel\u00f6st werden!"},
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+//  public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Redirect-Erweiterung: Dateiname konnte nicht ermittelt werden - 'file'- oder 'select'-Attribut muss g\u00fcltige Zeichenkette zur\u00fcckgeben."},
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+//  public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "FormatterListener kann in Redirect-Erweiterung nicht aufgebaut werden!"},
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+//  public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "Pr\u00e4fix in exclude-result-prefixes ist ung\u00fcltig: {0}"},
+
+  /** ER_MISSING_NS_URI          */
+//  public static final int ER_MISSING_NS_URI = 88;
+
+  {
+    ER_MISSING_NS_URI,
+      "Namensraum-URI f\u00fcr angegebenes Pr\u00e4fix fehlt"},
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+//  public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "Argument f\u00fcr Option fehlt: {0}"},
+
+  /** ER_INVALID_OPTION          */
+//  public static final int ER_INVALID_OPTION = 90;
+
+  {
+    ER_INVALID_OPTION, "Ung\u00fcltige Option: {0}"},
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+//  public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "Ung\u00fcltige Formatierungszeichenkette: {0}"},
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+//  public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet erfordert ein 'version'-Attribut!"},
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+//  public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "Attribut: {0} hat einen ung\u00fcltigen Wert: {1}"},
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+//  public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose erfordert xsl:when"},
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+//  public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports nicht zul\u00e4ssig in xsl:for-each"},
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+//  public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "Objekt der Klasse DTMLiaison kann f\u00fcr einen Ausgabe-DOM-Knoten nicht verwendet werden... \u00dcbergeben Sie statt dessen ein Objekt der Klasse org.apache.xpath.DOM2Helper!"},
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+//  public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "Objekt der Klasse DTMLiaison kann f\u00fcr einen Eingabe-DOM-Knoten nicht verwendet werden... \u00dcbergeben Sie statt dessen ein Objekt der Klasse org.apache.xpath.DOM2Helper!"},
+
+  /** ER_CALL_TO_EXT_FAILED          */
+//  public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "Aufruf des Erweiterungselements fehlgeschlagen: {0}"},
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+//  public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "Pr\u00e4fix muss sich in einen Namensraum aufl\u00f6sen: {0}"},
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+//  public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Ung\u00fcltiges UTF-16-Surrogat erkannt: {0} ?"},
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+//  public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} verwendet sich selbst, was zu einer Endlosschleife f\u00fchrt."},
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+//  public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "Eingabe, die nicht Xerces-DOM entspricht, kann nicht mit Xerces-DOM-Ausgabe gemischt werden!"},
+
+  /** ER_TOO_MANY_LISTENERS          */
+//  public static final int ER_TOO_MANY_LISTENERS = 103;
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+//  public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "In ElemTemplateElement.readObject: {0}"},
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+//  public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "Mehr als eine Vorlage gefunden, Name: {0}"},
+
+  /** ER_INVALID_KEY_CALL          */
+//  public static final int ER_INVALID_KEY_CALL = 106;
+
+  {
+    ER_INVALID_KEY_CALL,
+      "Ung\u00fcltiger Funktionsaufruf: Aufrufe mit rekursivem Schl\u00fcssel () nicht zul\u00e4ssig"},
+  
+  /** Variable is referencing itself          */
+ // public static final int ER_REFERENCING_ITSELF = 107;
+
+  {
+    ER_REFERENCING_ITSELF,
+      "Variable {0} bezieht sich direkt oder indirekt auf sich selbst!"},
+  
+  /** Illegal DOMSource input          */
+ // public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "Der Eingabeknoten darf f\u00fcr ein DOMSource f\u00fcr newTemplates nicht Null sein!"},
+	
+	/** Class not found for option         */
+//  public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"Klassendatei nicht gefunden f\u00fcr Option {0}"},
+	
+	/** Required Element not found         */
+//  public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"Erforderliches Element nicht gefunden: {0}"},
+  
+  /** InputStream cannot be null         */
+ // public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream kann nicht Null sein"},
+  
+  /** URI cannot be null         */
+ // public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI kann nicht Null sein"},
+  
+  /** File cannot be null         */
+ // public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"Datei kann nicht Null sein"},
+  
+   /** InputSource cannot be null         */
+ // public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource kann nicht Null sein"},
+  
+  /** Can't overwrite cause         */
+ // public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"Ursache f\u00fcr nicht m\u00f6gliches \u00dcberschreiben"},
+  
+  /** Could not initialize BSF Manager        */
+ // public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"BSF Manager konnte nicht initialisiert werden"},
+  
+  /** Could not compile extension       */
+ // public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"Erweiterung kann nicht kompiliert werden"},
+  
+  /** Could not create extension       */
+ // public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "Erweiterung kann nicht erstellt werde: {0} Grund: {1}"},
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+ // public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "Instanzenmethoden-Aufruf von Methode {0} erfordert eine Object-Instanz als erstes Argument"},
+  
+  /** Invalid element name specified       */
+ // public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "Ung\u00fcltiger Elementname angegeben {0}"},
+  
+   /** Element name method must be static      */
+ // public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "Elementnamen-Methode muss statisch sein {0}"},
+  
+   /** Extension function {0} : {1} is unknown      */
+ // public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "Erweiterungsfunktion {0} : {1} ist unbekannt"},
+  
+   /** More than one best match for constructor for       */
+ // public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "Mehr als ein Best-Match f\u00fcr Konstruktor f\u00fcr {0}"},
+  
+   /** More than one best match for method      */
+ // public static final int ER_MORE_MATCH_METHOD = 124;
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "Mehr als ein Best-Match f\u00fcr Methode {0}"},
+  
+   /** More than one best match for element method      */
+ // public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "Mehr als ein Best-Match f\u00fcr Elementmethode {0}"},
+  
+   /** Invalid context passed to evaluate       */
+ // public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "Ung\u00fcltiger Kontext zur Auswertung von {0} \u00fcbergeben"},
+  
+   /** Pool already exists       */
+ // public static final int ER_POOL_EXISTS = 127;
+
+  {
+    ER_POOL_EXISTS,
+             "Pool besteht bereits"},
+  
+   /** No driver Name specified      */
+ // public static final int ER_NO_DRIVER_NAME = 128;
+
+  {
+    ER_NO_DRIVER_NAME,
+             "Kein Treibername angegeben"},
+  
+   /** No URL specified     */
+ // public static final int ER_NO_URL = 129;
+
+  {
+    ER_NO_URL,
+             "Kein URL angegeben"},
+  
+   /** Pool size is less than one    */
+ // public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "Pool-Gr\u00f6\u00dfe kleiner als Eins!"},
+  
+   /** Invalid driver name specified    */
+ // public static final int ER_INVALID_DRIVER = 131;
+
+  {
+    ER_INVALID_DRIVER,
+             "Ung\u00fcltiger Treibername angegeben!"},
+  
+   /** Did not find the stylesheet root    */
+ // public static final int ER_NO_STYLESHEETROOT = 132;
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "Stylesheet-Stamm nicht gefunden!"},
+  
+   /** Illegal value for xml:space     */
+ // public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "Ung\u00fcltiger Wert f\u00fcr xml:space"},
+  
+   /** processFromNode failed     */
+//  public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "processFromNode fehlgeschlagen"},
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "Die Ressource [ {0} ] konnte nicht laden: {1} \n {2} \t {3}"},
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "Puffergr\u00f6\u00dfe <=0"},
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "Unbekannter Fehler beim Aufruf der Erweiterung"},
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "Pr\u00e4fix {0} hat keine entsprechende Namensraum-Vereinbarung"},
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "Elementinhalt nicht zul\u00e4ssig f\u00fcr lang=javaclass {0}"},
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "Stylesheet f\u00fchrte zu Beendigung"},
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+  {
+    ER_ONE_OR_TWO,
+        "1 oder 2"},
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+  {
+    ER_TWO_OR_THREE,
+        "2 oder 3"},
+
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "{0} konnte nicht geladen werden (\u00fcberpr\u00fcfen Sie CLASSPATH); jetzt werden die Standardwerte verwendet"},
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "Standardvorlagen k\u00f6nnen nicht initialisiert werden"},
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+  {
+    ER_RESULT_NULL,
+        "Ergebnis sollte nicht Null sein"},
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "Ergebnis konnte nicht festgelegt werden"},
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "Keine Ausgabe festgelegt"},
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "Transformation in ein Ergebnis vom Typ {0} nicht m\u00f6glich"},
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "Transformation einer Quelle vom Typ {0} nicht m\u00f6glich"},
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "Kein Content-Handler"},
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Kein Error-Handler"},
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "parse kann nicht aufgerufen werden, wenn der ContentHandler nicht festgelegt wurde"},
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "Kein \u00fcbergeordneter Knoten f\u00fcr Filter"},
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "Kein Stylesheet gefunden in: {0}, media= {1}"},
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "Kein xml-Stylesheet PI gefunden in: {0}"},
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "Keine Standardimplementierung gefunden"},
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0}) zurzeit nicht unterst\u00fctzt"},
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "Offset gr\u00f6\u00dfer als Slot"},
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "Coroutine nicht verf\u00fcgbar, ID={0}"},
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager empfing Anforderung co_exit()"},
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet() fehlgeschlagen"},
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+  {
+    ER_COROUTINE_PARAM,
+       "Parameterfehler in Coroutine ({0})"},
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: Parser doTerminate antwortet {0}"},
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "parse darf w\u00e4hrend des Parsens nicht aufgerufen werden"},
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Fehler: Typisierter Iterator f\u00fcr Achse {0} nicht implementiert"},
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Fehler: Iterator f\u00fcr Achse {0} nicht implementiert"},
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "Iterator-Klone nicht unterst\u00fctzt"},
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "Unbekannter Achsen-Traversaltyp: {0}"},
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "Achsen-Traverser nicht unterst\u00fctzt: {0}"},
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "Keine weiteren DTM-IDs verf\u00fcgbar"},
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+  {
+    ER_NOT_SUPPORTED,
+       "Nicht unterst\u00fctzt: {0}"},
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+  {
+    ER_NODE_NON_NULL,
+       "Knoten darf f\u00fcr getDTMHandleFromNode nicht Null sein"},
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "Der Knoten zu einem Handle konnte nicht aufgel\u00f6st werden"},
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "startParse darf beim Parsen nicht aufgerufen werden"},
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse ben\u00f6tigt einen SAXParser, der nicht Null ist"},
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "Parser konnte nicht initialisiert werden"},
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "Wert f\u00fcr Eigenschaft {0} sollte eine Boolesche Instanz sein"},
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "Ausnahme, die neue Instanz f\u00fcr Pool erstellt"},
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "Pfad enth\u00e4lt ung\u00fcltige Escape-Sequenz"},
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+  {
+    ER_SCHEME_REQUIRED,
+       "Schema ist erforderlich!"},
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "Kein Schema gefunden in URI: {0}"},
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+  {
+    ER_NO_SCHEME_INURI,
+       "Kein Schema gefunden in URI"},
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "Pfad enth\u00e4lt ung\u00fcltiges Zeichen: {0}"},
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "Schema kann ausgehend von Null-Zeichenkette nicht gesetzt werden"},
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "Schema ist nicht konform."},
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "Hostadresse nicht korrekt gebildet"},
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "Port kann nicht gesetzt werden, wenn Host Null ist"},
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+  {
+    ER_INVALID_PORT,
+       "Ung\u00fcltige Port-Nummer"},
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "Fragment kann nur f\u00fcr einen generischen URI gesetzt werden"},
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "Fragment kann nicht gesetzt werden, wenn der Pfad Null ist"},
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "Fragment enth\u00e4lt ung\u00fcltiges Zeichen"},
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+  {
+    ER_PARSER_IN_USE,
+        "Parser wird bereits verwendet"},
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "{0} {1} kann beim Parsen nicht ge\u00e4ndert werden"},
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "Selbst-Kausalit\u00e4t nicht erlaubt"},
+  
+   /* This key/message changed ,NEED ER_COULD_NOT_FIND_EXTERN_SCRIPT: Pending,Ramesh */
+   /** src attribute not yet supported for  */
+  //public static final int ER_SRC_ATTRIB_NOT_SUPPORTED = 195;
+
+  {
+    "ER_SRC_ATTRIB_NOT_SUPPORTED",
+       "''src''-Attribut f\u00fcr {0} noch nicht unterst\u00fctzt"},
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "Die Ressource [ {0} ] wurde nicht gefunden.\n {1}"},
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "Ausgabe-Eigenschaft nicht erkannt: {0}"},
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "Userinfo kann nicht angegeben werden, wenn Host nicht angegeben ist"},
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "Port kann nicht angegeben werden, wenn Host nicht angegeben ist"},
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "Abfragezeichenkette kann nicht sowohl im Pfad als auch in der Abfragezeichenkette angegeben werden"},
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "Fragment kann nicht sowohl im Pfad als auch im Fragment angegeben werden"},
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "URI kann nicht mit leeren Parametern initialisiert werden"},
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "Erstellen von ElemLiteralResult-Instanz fehlgeschlagen"},
+  
+  //XALAN_MANTIS CHANGES: Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. - nb.
+
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "Der Wert f\u00fcr {0} muss eine Nummer darstellen, die geparst werden kann."},
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        " Wert f\u00fcr {0} sollte Ja oder Nein sein"},
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        " Aufruf der Methode {0} fehlgeschlagen"},
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "Erstellen von ElemTemplateElement-Instanz fehlgeschlagen"},
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "Zeichen an dieser Stelle im Dokument nicht erlaubt"},
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "\"{0}\" Attribut ist nicht erlaubt f\u00fcr Element {1}!"},
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "Methode noch nicht unterst\u00fctzt "},
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+  {
+    ER_BAD_VALUE,
+     "{0} ung\u00fcltiger Wert {1} "},
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "{0} Attributwert nicht gefunden"},
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "{0} Attributwert nicht erkannt "},
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter kann zurzeit nicht neu gestartet werden"},
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader nicht vor startParse-Anforderung"},
+  
+    /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "Es wurde versucht, einen Namensraum-Pr\u00e4fix ohne URI zu erzeugen."},
+
+  //XALAN_MANTIS CHANGES: Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "Es wurde versucht, eine Zahl gr\u00f6\u00dfer als die gr\u00f6\u00dfte lange Ganzzahl zu formatieren."},
+
+//ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "Die SAX1-Treiberklasse {0} kann nicht gefunden werden."},
+
+//ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "Die SAX1-Treiberklasse {0} wurde gefunden, kann aber nicht geladen werden."},
+
+//ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "Die SAX1-Treiberklasse {0} wurde geladen, es kann aber keine Instanz gebildet werden."},
+
+
+// ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "Die SAX1-Treiberklasse {0} implementiert org.xml.sax.Parser nicht."},
+
+// ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "Die Systemeigenschaft org.xml.sax.parser wurde nicht angegeben."},
+
+//ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "Das Parserargument darf nicht Null sein."},
+
+
+// ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+  {
+    ER_FEATURE,
+     "Merkmal: {0}"},
+
+
+// ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+  {
+    ER_PROPERTY,
+     "Eigenschaft: {0}"},
+
+// ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "Entity-Resolver Null"},
+
+// ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "DTD-Handler Null"},
+
+// No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "Kein Treibername angegeben!"},
+
+
+// No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+  {
+    ER_NO_URL_SPECIFIED,
+     "Kein URL angegeben!"},
+
+
+// Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "Pool-Gr\u00f6\u00dfe ist kleiner als 1!"},
+
+
+// Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+  {
+    ER_INVALID_DRIVER_NAME,
+     "Ung\u00fcltiger Treibername angegeben!"},
+
+
+
+// ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+  {
+    ER_ERRORLISTENER,
+     "ErrorListener"},
+
+
+// Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "Programmierfehler! Ausdruck weist kein \u00fcbergeordnetes Element ElemTemplateElement auf!"},
+
+
+// Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "Programmierannahme in RundundentExprEliminator: {0}"},
+
+// Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "Achsen-Traverser nicht unterst\u00fctzt: {0}"},
+
+// ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+  {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "ListingErrorHandler wurde mit Null-PrintWriter erstellt!"},
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "{0} ist an dieser Stelle im Stylesheet nicht zul\u00e4ssig!"},
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "An dieser Stelle im Stylesheet ist nur Leerraum zul\u00e4ssig!"},
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+  {
+    INVALID_TCHAR,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das CHAR-Attribut {0} verwendet. Ein Attribut vom Typ CHAR darf nur ein Zeichen aufweisen!"},
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "Unbekannte SystemId"},
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+  {
+    ER_LOCATION_UNKNOWN,
+     "Fehler befindet sich an unbekannter Stelle"},
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+  {
+    INVALID_QNAME,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das QNAME-Attribut {0} verwendet."},
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+  {
+    INVALID_ENUM,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das ENUM-Attribut {0} verwendet. Die g\u00fcltigen Werte lauten: {2}."},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+  {
+    INVALID_NMTOKEN,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das NMTOKEN-Attribut {0} verwendet. "},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+  {
+    INVALID_NCNAME,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das NCNAME-Attribut {0} verwendet. "},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+  {
+    INVALID_BOOLEAN,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das boolean-Attribut {0} verwendet. "},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+  {
+    INVALID_NUMBER,
+     "Ung\u00fcltiger Wert: {1} wurde f\u00fcr das number-Attribut {0} verwendet. "},
+
+
+  // End of shared codes...
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+  {
+    ER_ARG_LITERAL,
+     "Das Argument f\u00fcr {0} im Muster muss ein Literal sein."},
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "Doppelte Deklaration einer globalen Variablen."},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+  {
+    ER_DUPLICATE_VAR,
+     "Doppelte Deklaration einer Variablen."},
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "Das Element xsl:template muss ein name- oder ein match-Attribut (oder beide) aufweisen."},
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+  {
+    ER_INVALID_PREFIX,
+     "Pr\u00e4fix in exclude-result-prefixes ist nicht g\u00fcltig: {0}"},
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+  {
+    ER_NO_ATTRIB_SET,
+     "Das Attributset mit dem Namen {0} ist nicht vorhanden."},
+
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "'}' gefunden, aber keine Attributvorlage ge\u00f6ffnet!"},
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "Warnung: ''count''-Attribute passt zu keinem Vorg\u00e4ngerknoten in xsl:number! Ziel = {0}"},
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "Alte Syntax: Der Name des 'expr'-Attributs ist zu 'select' ge\u00e4ndert worden."},
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan bearbeitet den lokalen Namen in der Funktion format-number noch nicht."},
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "Warnung: Locale f\u00fcr xml:lang={0} nicht gefunden"},
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "URL kann nicht erstellt werden aus: {0}"},
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "Angefordertes Dokument kann nicht geladen werden: {0}"},
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "Collator f\u00fcr <sort xml:lang={0} nicht gefunden"},
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "Alte Syntax: Die Funktionsanweisung sollten einen URL von {0} verwenden"},
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "Codierung nicht unterst\u00fctzt: {0}, UTF-8 wird verwendet"},
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "Codierung nicht unterst\u00fctzt: {0}, Java {1} wird verwendet"},
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "Spezifit\u00e4tskonflikte gefunden: {0} Zuletzt in Stylesheet gefundenes wird verwendet."},
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= Parsen und Vorbereiten {0} =========="},
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+  {
+    WG_ATTR_TEMPLATE, "Attributvorlage, {0}"},
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "Match-Konflikt zwischen xsl:strip-space und xsl:preserve-space"},
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan bearbeitet das Attribut {0} noch nicht!"},
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "Keine Vereinbarung f\u00fcr Dezimalformat gefunden: {0}"},
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+  {
+    WG_OLD_XSLT_NS, "XSLT-Namensraum fehlt oder ist nicht korrekt. "},
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "Nur eine Standardvereinbarung xsl:decimal-format ist erlaubt."},
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-format-Namen m\u00fcssen eindeutig sein. Name \"{0}\" ist nicht eindeutig."},
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} hat ein ung\u00fcltiges Attribut: {1}"},
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "Namensraum-Pr\u00e4fix konnte nicht aufgel\u00f6st werden: {0}. Der Knoten wird ignoriert."},
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet erfordert ein 'version'-Attribut!"},
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "Ung\u00fcltiger Attributname: {0}"},
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "Ung\u00fcltiger Wert f\u00fcr Attribut {0}: {1}"},
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "Resultierendes Knotenset aus zweitem Argument von document-Funktion ist leer. Das erste Argument wird verwendet."},
+
+   //XALAN_MANTIS CHANGES: Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+  {
+    WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "Der Wert des name-Attributs von xsl:processing-instruction darf nicht 'xml' lauten."},
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+  {
+    WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "Der Wert des name-Attributs von xsl:processing-instruction muss einem g\u00fcltigen ''NCName'' entsprechen: {0}"},
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "Das Attribut {0} kann nicht nach untergeordneten Elementen oder vor der Erstellung eines Elements hinzugef\u00fcgt werden. Das Attribut wird ignoriert."},
+
+    //XALAN_MANTIS CHANGES: WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+// Other miscellaneous text used inside the code...
+    { "ui_language", "de"},
+    { "help_language", "de"},
+    { "language", "de"},
+    { "BAD_CODE", "Parameter f\u00fcr createMessage au\u00dferhalb der Grenzwerte"},
+    { "FORMAT_FAILED",
+      "Ausnahme bei messageFormat-Aufruf"},
+    { "version", ">>>>>>> Xalan Version "},
+    { "version2", "<<<<<<<"},
+    { "yes", "ja"},
+    { "line", "Zeile #"},
+    { "column", "Spalte #"},
+    { "xsldone",  "XSLProcessor: fertig"},
+    { "xslProc_option",  "Optionen der Klasse Process in Xalan-J-Befehlszeile:"},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT",  "   [-OUT outputFileName]"},
+    { "optionLXCIN", "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT", "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER", "   [-PARSER voll qualifizierter Klassenname von Parserliaison]"},
+    { "optionE",  "   [-E (Entity-Referenzen nicht erweitern)]"},
+    { "optionV", "   [-E (Entity-Referenzen nicht erweitern)]"},
+    { "optionQC", "   [-QC (Ger\u00e4uscharme Warnungen bei Musterkonflikten)]"},
+    { "optionQ", "   [-Q  (Ger\u00e4uschmer Modus)]"},
+    { "optionLF", "   [-LF (bei Ausgabe nur Zeilenvorsprung {Standard ist CR/LF})]"},
+    { "optionCR", "   [-CR (bei Ausgabe nur Wagenr\u00fccklauf {Standard ist CR/LF})]"},
+    { "optionESCAPE", "   [-ESCAPE (Zeichen f\u00fcr Escape {Standard ist <>&\"\'\\r\\n}]"},
+    {  "optionINDENT", "   [-INDENT (Anzahl der Leerzeichen zum Einr\u00fccken {Standard ist 0})]"},
+    { "optionTT", "   [-TT (Vorlagen beim Aufruf verfolgen.)]"},
+    { "optionTG", "   [-TG (Jedes Erzeugungsereignis verfolgen.)]"},
+    { "optionTS", "   [-TS (Jedes Auswahlereignis verfolgen.)]"},
+    { "optionTTC", "   [-TTC (Die Vorlagen-Tochterknoten bei Bearbeitung verfolgen.)]"},
+    { "optionTCLASS", "   [-TCLASS (TraceListener-Klasse f\u00fcr Trace-Erweiterungen.)]"},
+    { "optionVALIDATE", "   [-VALIDATE (Festlegen, ob Validierung stattfindet. Standard ist keine Validierung.)]"},
+    { "optionEDUMP", "   [-EDUMP {optionaler Dateiname} (Speicherauszug bei Fehler.)]"},
+    { "optionXML", "   [-XML (XML-Formatierer verwenden und XML-Header hinzuf\u00fcgen.)]"},
+    { "optionTEXT", "   [-TEXT (Einfachen Textformatierer verwenden.)]"},
+    { "optionHTML", "   [-HTML (HTML-Formatierer verwenden.)]"},
+    { "optionPARAM", "   [-PARAM Namensausdruck (Stylesheet-Parameter festlegen)]"},
+    { "noParsermsg1",  "XSL-Prozess fehlgeschlagen."},
+    { "noParsermsg2",  "** Parser nicht gefunden **"},
+    { "noParsermsg3",  "Bitte Classpath \u00fcberpr\u00fcfen."},
+    { "noParsermsg4", "Wenn Sie IBMs XML Parser for Java nicht haben, k\u00f6nnen Sie ihn von folgender Adresse herunterladen"},
+    { "noParsermsg5",
+	"IBMs AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+    { "optionURIRESOLVER",
+     "   [-URIRESOLVER vollst\u00e4ndiger Klassenname (zum Aufl\u00f6sen von URIs zu verwendender URIResolver)]"},
+    { "optionENTITYRESOLVER",
+     "   [-ENTITYRESOLVER vollst\u00e4ndiger Klassenname (zum Aufl\u00f6sen von Entities zu verwendender EntityResolver)]"},
+    { "optionCONTENTHANDLER",
+     "   [-CONTENTHANDLER vollst\u00e4ndiger Klassenname (zum Serialisieren der Ausgabe zu verwendender ContentHandler)]"},
+    { "optionLINENUMBERS",
+     "   [-L Zeilennummern f\u00fcr Quelldokument verwenden]"},
+		
+    //XALAN_MANTIS CHANGES: Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+     " [-MEDIA Medientyp (media-Attribut zum Auffinden des einem Dokument zugeordneten Stylesheets verwenden)]"},
+    { "optionFLAVOR",
+     " [-FLAVOR Variantenname(Ausdr\u00fccklich s2s=SAX oder d2d=DOM f\u00fcr die Transformation verwenden)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+     " [-DIAG (Zeitdauer der Transformation in Millisekunden ausgeben)]"},
+    { "optionINCREMENTAL",
+     " [-INCREMENTAL (Inkrementellen DTM-Aufbau anfordern, indem http://xml.apache.org/xalan/features/incremental auf 'Wahr' gesetzt wird)]"},
+    { "optionNOOPTIMIMIZE",
+     " [-NOOPTIMIMIZE (Keine Optimierung des Stylesheets durchf\u00fchren, indem http://xml.apache.org/xalan/features/optimize auf 'Falsch' gesetzt wird)]"},
+    { "optionRL",
+     " [-RL Rekursionsgrenze (Numerische Begrenzung der Rekursionstiefe f\u00fcr das Stylesheet)]"},
+    { "optionXO",
+     " [-XO [Translet-Name] (Zuweisen eines Namens zum erzeugten Translet)]"},
+    { "optionXD",
+     " [-XD Zielverzeichnis (Angabe eines Zielverzeichnisses f\u00fcr das Translet)]"},
+    { "optionXJ",
+     " [-XJ JAR-Datei (Erstellt ein Paket mit den Translet-Klassen in einer JAR-Datei mit dem Namen <JAR-Datei>)]"},
+    {  "optionXP",
+     " [-XP Paket (Angabe eines Paketnamen-Pr\u00e4fixes f\u00fcr alle erzeugten Translet-Klassen)]"}
+
+
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#Fehler";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "Fehler: ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "Warnung: ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "MUSTER ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
+
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_en.java b/src/org/apache/xalan/res/XSLTErrorResources_en.java
new file mode 100644
index 0000000..48ac906
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_en.java
@@ -0,0 +1,67 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+
+/**
+ * <meta name="usage" content="advanced"/>
+ * Default implementation of XSLTErrorResources.  This is just
+ * an empty class.
+ */
+public class XSLTErrorResources_en extends XSLTErrorResources
+{
+}
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_es.java b/src/org/apache/xalan/res/XSLTErrorResources_es.java
new file mode 100644
index 0000000..cb8a606
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_es.java
@@ -0,0 +1,2298 @@
+/*
+ * @(#)XSLTErrorResources_es.java	1.6 02/03/26
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+public class XSLTErrorResources_es extends XSLTErrorResources
+{
+
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;          
+
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  public static final Object[][] contents = {
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //  public static final int ERROR0000 = 0;
+
+  {
+    "ERROR0000", "{0}"},
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+  {
+    ER_NO_CURLYBRACE,
+      "Error: No se puede incluir '{' en una expresi\u00f3n"},
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0} tiene un atributo no permitido: {1}"},
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+	  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "sourceNode es nulo en xsl:apply-imports."},
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+  {
+    ER_CANNOT_ADD, "No se puede a\u00f1adir {0} a {1}"},
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "sourceNode es nulo en handleApplyTemplatesInstruction."},
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+  {
+    ER_NO_NAME_ATTRIB, "{0} debe tener un atributo de nombre."},
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "No se ha encontrado ninguna plantilla con el nombre: {0}"},
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "No se ha podido convertir el nombre AVT en xsl:call-template."},
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+  {
+    ER_REQUIRES_ATTRIB, "{0} necesita un atributo: {1}"},
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} debe tener un atributo ''test''."},
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "Valor err\u00f3neo en un atributo de nivel: {0}"},
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "el nombre de la instrucci\u00f3n de procesamiento no puede ser 'xml'"},
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "el nombre de la instrucci\u00f3n de procesamiento debe ser un NCName v\u00e1lido: {0}"},
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0} debe tener un atributo de b\u00fasqueda si tiene un modo."},
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} necesita un atributo de nombre o de b\u00fasqueda."},
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "No se puede convertir el prefijo de espacio de nombre: {0}"},
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space tiene un valor no permitido: {0}"},
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+  {
+    ER_NO_OWNERDOC,
+      "El nodo hijo no tiene documento propietario."},
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "Error ElemTemplateElement: {0}"},
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+  {
+    ER_NULL_CHILD, "Intentando agregar un hijo nulo."},
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0} necesita un atributo de selecci\u00f3n."},
+
+  /** ER_NEED_TEST_ATTRIB          */
+
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when debe tener un atributo 'test'."},
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param debe tener un atributo 'name'."},
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "el contexto no tiene documento propietario."},
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "No se ha podido crear un v\u00ednculo XML TransformerFactory: {0}"},
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: El proceso ha fallado."},
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan: ha fallado."},
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "Codificaci\u00f3n no admitida: {0}"},
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "No se ha podido crear TraceListener: {0}"},
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key necesita un atributo 'name'."},
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key necesita un atributo 'match'."},
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key necesita un atributo 'use'."},
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} necesita un atributo ''elements''."},
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} falta el atributo ''prefix''"},
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+  {
+    ER_BAD_STYLESHEET_URL, "El URL de la hoja de estilo es err\u00f3neo: {0}"},
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+  {
+    ER_FILE_NOT_FOUND, "No se ha encontrado el archivo de la hoja de estilo: {0}"},
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+  {
+    ER_IOEXCEPTION,
+      "Ten\u00eda una excepci\u00f3n E/S en el archivo de la hoja de estilo: {0}"},
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) No se ha encontrado el atributo href para {0}"},
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} se incluye a s\u00ed mismo directa o indirectamente."},
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "Error StylesheetHandler.processInclude, {0}"},
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} falta el atributo ''lang''"},
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) \u00bfelemento {0} mal colocado? Falta el elemento ''component'' del contenedor"},
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+
+      "S\u00f3lo puede enviarse a Element, DocumentFragment, Document o PrintWriter."},
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+  {
+    ER_PROCESS_ERROR, "Error StylesheetRoot.process"},
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+  {
+    ER_UNIMPLNODE_ERROR, "Error UnImplNode: {0}"},
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "Error. No se ha encontrado la expresi\u00f3n de selecci\u00f3n xpath (-seleccionar)."},
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "No se puede serializar un XSLProcessor."},
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "No se ha especificado la entrada de la hoja de estilo."},
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "No se ha podido procesar la hoja de estilo."},
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+  {
+    ER_COULDNT_PARSE_DOC, "No se ha podido analizar sint\u00e1cticamente el documento {0}."},
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "No se ha encontrado el fragmento: {0}"},
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "El nodo se\u00f1alado por el identificador de fragmento no era un elemento: {0}"},
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each debe tener un atributo de b\u00fasqueda o de nombre"},
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "las plantillas deben tener un atributo de b\u00fasqueda o de nombre"},
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "No existe clon de un fragmento de un documento"},
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "No se puede crear el elemento en el \u00e1rbol de resultados: {0}"},
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "xml:space en el XML fuente tiene un valor no permitido: {0}"},
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "No existe ninguna declaraci\u00f3n xsl:key para {0}."},
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+  {
+    ER_CANT_CREATE_URL, "Error. No se puede crear el url para: {0}"},
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions no se admite"},
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+  {
+    ER_PROCESSOR_ERROR, "Error XSLT TransformerFactory"},
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} no se permite en una hoja de estilo."},
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "result-ns ya no se utiliza.  Utilizar en su lugar xsl:output"},
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "default-space ya no se utiliza.  Utilizar en su lugar xsl:strip-space o xsl:preserve-space"},
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result ya no se utiliza. Utilizar en su lugar xsl:output"},
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} tiene un atributo no permitido: {1}"},
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "Elemento XSL desconocido: {0}"},
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort s\u00f3lo puede utilizarse con xsl:apply-templates o con xsl:for-each."},
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) xsl:when mal colocado."},
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when no es hijo de xsl:choose."},
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) xsl:otherwise mal colocado."},
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise no es hijo de xsl:choose."},
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} no se permite en una plantilla."},
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} prejijo de espacio de nombre de extensi\u00f3n {1} desconocido"},
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) Las importaciones s\u00f3lo pueden ser los primeros elementos de la hoja de estilo."},
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} se importa a s\u00ed mismo directa o indirectamente."},
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space tiene un valor no permitido: {0}"},
+
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet ha fallado."},
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+  {
+    ER_SAX_EXCEPTION, "Excepci\u00f3n SAX"},
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "Funci\u00f3n no admitida"},
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+  {
+    ER_XSLT_ERROR, "Error XSLT"},
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "el signo de divisa no se permite en la cadena de patrones de formato"},
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "La hoja de estilo DOM no admite la funci\u00f3n de documento."},
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "No se puede convertir el prefijo del convertidor de ausencia de prefijo."},
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Reencaminar extensi\u00f3n : No se ha podido obtener el nombre del archivo - el atributo de archivo o de selecci\u00f3n debe presentar una cadena v\u00e1lida."},
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "No se puede crear FormatterListener en extensi\u00f3n Redirect."},
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "El prefijo de exclude-result-prefixes no es v\u00e1lido: {0}"},
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+  {
+    ER_MISSING_NS_URI,
+      "Falta el URI de espacio de nombre del prefijo especificado"},
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "Falta el argumento en la opci\u00f3n: {0}"},
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+  {
+    ER_INVALID_OPTION, "Opci\u00f3n no v\u00e1lida: {0}"},
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "Cadena de formato mal construida: {0}"},
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet necesita un atributo 'version'."},
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "El atributo: {0} tiene un valor no permitido: {1}"},
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose requiere xsl:when"},
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports no se permite en xsl:for-each"},
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "No se puede utilizar DTMLiaison con un nodo DOM de salida... utilizar en su lugar org.apache.xpath.DOM2Helper."},
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "No se puede utilizar DTMLiaison con un nodo DOM de salida... utilizar en su lugar org.apache.xpath.DOM2Helper."},
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "Ha fallado el elemento de llamada a la extensi\u00f3n: {0}"},
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "El prefijo debe convertir un espacio de nombre: {0}"},
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Se ha detectado un sustituto de UTF-16 no v\u00e1lido: {0} ?"},
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} se utiliza a s\u00ed mismo y provocar\u00e1 un bucle sin fin."},
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "No se puede mezclar una entrada no Xerces-DOM con una salida Xerces-DOM."},
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "En ElemTemplateElement.readObject: {0}"},
+
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "Se ha encontrado m\u00e1s de una plantilla con el nombre: {0}"},
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+  {
+    ER_INVALID_KEY_CALL,
+      "Llamada a funci\u00f3n no v\u00e1lida: no se permiten las llamadas con clave recursiva()"},
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+  {
+    ER_REFERENCING_ITSELF,
+      "La variable {0} se refiere a s\u00ed misma directa o indirectamente."},
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "El nodo de entrada no puede ser nulo para DOMSource en newTemplates."},
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"No se ha encontrado el archivo de clase para la opci\u00f3n {0}"},
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"No se ha encontrado el elemento requerido: {0}"},
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream no puede ser nulo"},
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI no puede ser nulo"},
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"El archivo no puede ser nulo"},
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource no puede ser nulo"},
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"No se puede sobrescribir la causa"},
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"No se ha podido inicializar el administrador de BSF"},
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"No se ha podido compilar la extensi\u00f3n"},
+  
+
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "No se ha podido crear la extensi\u00f3n: {0} debido a: {1}"},
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "El primer argumento de la llamada del m\u00e9todo de instancia al m\u00e9todo {0} necesita una instancia de objeto"},
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "Se ha especificado un nombre de elemento no v\u00e1lido {0}"},
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "El m\u00e9todo del nombre de elemento debe ser est\u00e1tico {0}"},
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "La funci\u00f3n de extensi\u00f3n {0} : {1} es desconocida"},
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "Hay m\u00e1s de una coincidencia \u00f3ptima para el creador en {0}"},
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "Hay m\u00e1s de una coincidencia \u00f3ptima para el m\u00e9todo {0}"},
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "Hay m\u00e1s de una coincidencia \u00f3ptima para el m\u00e9todo del elemento {0}"},
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "El contexto no v\u00e1lido se ha pasado a evaluaci\u00f3n {0}"},
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+  {
+    ER_POOL_EXISTS,
+             "El pool ya existe"},
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+  {
+    ER_NO_DRIVER_NAME,
+             "No se ha especificado ning\u00fan nombre para el dispositivo"},
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+  {
+    ER_NO_URL,
+             "No se ha especificado ning\u00fan URL"},
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "El tama\u00f1o del pool es menor que uno."},
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+  {
+    ER_INVALID_DRIVER,
+             "Se ha especificado un nombre de dispositivo no v\u00e1lido."},
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "No se ha encontrado la ra\u00edz de la hoja de estilo."},
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "Valor no permitido para xml:space"},
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "Fallo de processFromNode"},
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "El recurso [ {0} ] no ha podido cargar: {1} \n {2} \t {3}"},
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "Tama\u00f1o del b\u00fafer <=0"},
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "Error desconocido al llamar a la extensi\u00f3n"},
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "El prefijo {0} no tiene la declaraci\u00f3n de espacio de nombre correspondiente"},
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "El contenido del elemento no est\u00e1 permitido para lang=javaclass {0}"},
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "Terminaci\u00f3n dirigida a la hoja de estilo"},
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+  {
+    ER_ONE_OR_TWO,
+        "1 \u00f3 2"},
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+  {
+    ER_TWO_OR_THREE,
+        "2 \u00f3 3"},
+
+  
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "No se ha podido cargar {0} (comprobar CLASSPATH), el sistema est\u00e1 utilizando los valores predeterminados"},
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "No se puede inicializar las plantillas predeterminadas"},
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+  {
+    ER_RESULT_NULL,
+        "El resultado no debe ser nulo"},
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "No ha podido establecerse el resultado"},
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "No se ha especificado ninguna salida"},
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "No se puede transformar en un resultado del tipo {0}"},
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "No se puede transformar una fuente del tipo {0}"},
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "Manejador de contenido nulo"},
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Manejador de errores nulo"},
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "no puede invocarse el analizador sint\u00e1ctico si no se ha establecido el ContentHandler"},
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "No existe ning\u00fan elemento padre para el filtro"},
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "No se ha encontrado ninguna hoja de estilo en: {0}, media= {1}"},
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "No se ha encontrado xml-stylesheet PI en: {0}"},
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "No se ha encontrado ninguna implementaci\u00f3n predeterminada "},
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0}) no se utiliza actualmente"},
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "La desviaci\u00f3n es mayor que el intervalo"},
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "Corrutina no disponible, id={0}"},
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager ha recibido una solicitud co_exit()"},
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "Fallo co_joinCoroutineSet()"},
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+  {
+    ER_COROUTINE_PARAM,
+       "Error de par\u00e1metro de corrutina({0})"},
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: el analizador sint\u00e1ctico doTerminate responde {0}"},
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "no puede invocarse el analizador sint\u00e1ctico con un an\u00e1lisis sint\u00e1ctico en curso"},
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Error: El iterador introducido para el eje  {0} no est\u00e1 implementado"},
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Error: el iterador para el eje {0} no est\u00e1 implementado "},
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "no se admite clon del iterador"},
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "El tipo de eje transversal es desconocido: {0}"},
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "No se admite traverser de eje: {0}"},
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "No hay m\u00e1s Id de DTM disponibles"},
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+  {
+    ER_NOT_SUPPORTED,
+       "No se admite: {0}"},
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+  {
+    ER_NODE_NON_NULL,
+       "El nodo no puede ser nulo para getDTMHandleFromNode"},
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "No se ha podido convertir el nodo en un manejador"},
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "no se puede invocar startParse con un an\u00e1lisis sint\u00e1ctico en curso"},
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse no admite SAXParser nulo"},
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "No se ha podido inicializar el analizador sint\u00e1ctico con"},
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "El valor de propiedad {0} debe ser una instancia booleana"},
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "se ha producido una excepci\u00f3n al crear una nueva instancia para pool"},
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "El trayecto contiene una secuencia de escape no v\u00e1lida"},
+  
+   /**  Scheme is required.  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+  {
+    ER_SCHEME_REQUIRED,
+       "Se necesita un esquema."},
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "No se ha encontrado ning\u00fan esquema en el URI: {0}"},
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+  {
+    ER_NO_SCHEME_INURI,
+       "No se ha encontrado ning\u00fan esquema en el URI"},
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "El trayecto contiene un car\u00e1cter no v\u00e1lido: {0}"},
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "No se puede establecer un esquema a partir de una cadena nula"},
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "El esquema no es aceptable."},
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "El sistema central no es una direcci\u00f3n bien construida"},
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "No puede establecerse el puerto cuando el sistema central es nulo"},
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+  {
+    ER_INVALID_PORT,
+       "N\u00famero de puerto no v\u00e1lido"},
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "S\u00f3lo puede establecerse el fragmento para un URI gen\u00e9rico"},
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "No puede establecerse el fragmento cuando el trayecto es nulo"},
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "El fragmento contiene un car\u00e1cter no v\u00e1lido"},
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+  {
+    ER_PARSER_IN_USE,
+        "El analizador sint\u00e1ctico est\u00e1 en uso"},
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "No se puede cambiar {0} {1} mientras el an\u00e1lisis sint\u00e1ctico est\u00e1 en curso"},
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "No se permite la autocausalidad"},
+  
+  /* This key/message changed ,NEED ER_COULD_NOT_FIND_EXTERN_SCRIPT: Pending,Ra
+mesh */
+   /** src attribute not yet supported for  */
+  //public static final int ER_SRC_ATTRIB_NOT_SUPPORTED = 195;
+
+  {
+    "ER_SRC_ATTRIB_NOT_SUPPORTED",
+       "el atributo src no se permite todav\u00eda para {0}"},
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "No se ha encontrado el recurso [ {0} ].\n {1}"},
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "Propiedad de salida no reconocida: {0}"},
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "La informaci\u00f3n de usuario no puede especificarse si no se especifica el sistema central"},
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "El puerto no puede especificarse si no est\u00e1 especificado el sistema central"},
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "La cadena de consulta no puede especificarse a la vez en el trayecto y en la cadena de consulta"},
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "El fragmento no puede especificarse a la vez en el trayecto y en el fragmento"},
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "No se puede inicializar el URI con par\u00e1metros vac\u00edos"},
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "Fallo de creaci\u00f3n de instancia ElemLiteralResult"},
+
+  // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. - nb.
+
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "El valor de {0} debe contener un n\u00famero que se pueda analizar"},
+
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        " El valor de {0} debe ser igual a s\u00ed o no"},
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        " Fallo de invocaci\u00f3n del m\u00e9todo {0}"},
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "Fallo de creaci\u00f3n de instancia ElemTemplateElement"},
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "No se permiten caracteres en esta parte del documento"},
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "el atributo \"{0}\" no se permite en el elemento {1}."},
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "M\u00e9todo todav\u00eda no utilizado"},
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+  {
+    ER_BAD_VALUE,
+     "{0} valor err\u00f3neo {1} "},
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "no se ha encontrado el valor del atributo {0}"},
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "no se reconoce el valor del atributo {0}"},
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter no puede reiniciarse actualmente"},
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader no antes de una solicitud startParse"},
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "Se ha intentado generar un prefijo de espacio de nombre con un URI nulo"},
+
+  //Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "Se ha intentado dar formato a un n\u00famero mayor que el entero Long de mayor tama\u00f1o"},
+
+  //ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "No se puede hallar la clase {0} del controlador SAX1"},
+
+  //ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "Se ha encontrado la clase {0} del controlador SAX1 pero no se puede cargar"},
+
+  //ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "Se ha cargado la clase {0} del controlador SAX1 pero no se puede crear una instancia"},
+
+
+  // ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "La clase {0} del controlador SAX1 no implementa org.xml.sax.Parser"},
+
+  // ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "No se ha especificado la propiedad de sistema org.xml.sax.parser"},
+
+  //ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "El argumento del analizador sint\u00e1ctico no debe ser nulo"},
+
+
+  // ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+  {
+    ER_FEATURE,
+     "Caracter\u00edstica: {0}"},
+
+
+  // ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+  {
+    ER_PROPERTY,
+     "Propiedad:{0}"},
+
+  // ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "Convertidor de entidad nulo"},
+
+  // ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "Manejador DTD nulo"},
+
+  // No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "No se ha especificado un nombre de controlador"},
+
+
+  // No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+  {
+    ER_NO_URL_SPECIFIED,
+     "No se ha especificado una URL"},
+
+
+  // Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "\u00a1El tama\u00f1o de pool es inferior a 1!"},
+
+
+  // Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+  {
+    ER_INVALID_DRIVER_NAME,
+     "El nombre de controlador especificado no es v\u00e1lido"},
+
+
+
+  // ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+  {
+    ER_ERRORLISTENER,
+     "ErrorListener"},
+
+
+  // Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "Error de programaci\u00f3n. expr no tiene ElemTemplateElement padre!"},
+
+
+  // Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "Confirmaci\u00f3n del programador en RundundentExprEliminator: {0}"},
+
+  // Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "No se admite el eje transversal: {0}"},
+
+  // ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+  {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "ListingErrorHandler creado con PrintWriter nulo"},
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "{0} no est\u00e1 permitido en esta posici\u00f3n de la hoja de estilo"},
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "En esta posici\u00f3n de la hoja de estilo no se admite texto; solo espacios en blanco "},
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+  {
+    INVALID_TCHAR,
+     "Valor no v\u00e1lido: {1} utilizado para el atributo CHAR: {0}.  Un atributo de tipo CHAR debe tener 1 solo car\u00e1cter"},
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "Id de sistema desconocido"},
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+  {
+    ER_LOCATION_UNKNOWN,
+     "Ubicaci\u00f3n del error desconocida"},
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+  {
+    INVALID_QNAME,
+     "Valor no v\u00e1lido: {1} utilizado para atributo QNAME: {0}"},
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+  {
+    INVALID_ENUM,
+     "Valor no v\u00e1lido: {1} utilizado para atributo ENUM: {0}.  Los valores v\u00e1lidos son: {2}."},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+  {
+    INVALID_NMTOKEN,
+     "Valor no v\u00e1lido: {1} utilizado para atributo NMTOKEN: {0}"},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+  // of the attribute, and should not be translated.The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+  {
+    INVALID_NCNAME,
+     "Valor no v\u00e1lido: {1} utilizado para atributo NCNAME : {0}"},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+  {
+    INVALID_BOOLEAN,
+     "Valor no v\u00e1lido: {1} utilizado para atributo booleano: {0}"},
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+  {
+    INVALID_NUMBER,
+     "Valor no v\u00e1lido: {1} utilizado para atributo de n\u00famero: {0}"},
+
+
+  // End of shared codes...
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+  {
+    ER_ARG_LITERAL,
+     "El argumento de {0} en el patr\u00f3n coincidente debe ser literal."},
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "Declaraci\u00f3n de variable global duplicada."},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+  {
+    ER_DUPLICATE_VAR,
+     "Declaraci\u00f3n de variable duplicada."},
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "xsl: template debe tener un atributo name o match (o ambos)"},
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+  {
+    ER_INVALID_PREFIX,
+     "El prefijo de exclude-result-prefixes no es v\u00e1lido: {0}"},
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+  {
+    ER_NO_ATTRIB_SET,
+     "no existe el conjunto de atributos denominado {0}"},
+
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "Se ha encontrado '}' pero no hay abierta ninguna plantilla de atributos."},
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "Advertencia: el atributo de c\u00f3mputo no coincide con ning\u00fan antecesor en xsl:number. Objetivo = {0}"},
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "Sintaxis antigua: El nombre del atributo 'expr' se ha cambiado por 'select'."},
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+
+      "Xalan no maneja todav\u00eda el nombre locale en la funci\u00f3n format-number."},
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "Advertencia: No se ha encontrado locale para xml:lang={0}"},
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "No se puede crear URL desde: {0}"},
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "No se puede cargar el doc solicitado: {0}"},
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "No se ha encontrado Collator para <sort xml:lang={0}"},
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "Sintaxis antigua: la instrucci\u00f3n de las funciones debe utilizar un url de {0}"},
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "codificaci\u00f3n no admitida: {0}, se utiliza UTF-8"},
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "codificaci\u00f3n no admitida: {0}, se utiliza Java {1}"},
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "Se han encontrado conflictos de especificidad: {0} Se utilizar\u00e1 la \u00faltima encontrada en la hoja de estilo."},
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= An\u00e1lisis sint\u00e1ctico y preparaci\u00f3n {0} =========="},
+
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+  {
+    WG_ATTR_TEMPLATE, "Plantilla atri, {0}"},
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "Conflicto de coincidencia entre xsl:strip-space y xsl:preserve-space"},
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan no maneja todav\u00eda el atributo {0}."},
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "No se ha encontrado ninguna declaraci\u00f3n para el formato decimal: {0}"},
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+  {
+    WG_OLD_XSLT_NS, "Falta el espacio de nombre XSLT o es incorrecto. "},
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "S\u00f3lo se permite una declaraci\u00f3n xsl:decimal-format predeterminada."},
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "los nombres xsl:decimal-format deben ser \u00fanicos. El nombre \"{0}\" est\u00e1 duplicado."},
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} tiene un atributo no permitido: {1}"},
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "No se ha podido convertir el prefijo de espacio de nombre : {0}. El nodo se ignorar\u00e1."},
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet necesita un atributo 'version'."},
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "Nombre de atributo no permitido: {0}"},
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "Se ha utilizado un valor no permitido para el atributo {0}: {1}"},
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "El conjunto de nodos resultante del segundo argumento de la funci\u00f3n de documento est\u00e1 vac\u00edo. Se utilizar\u00e1 el primer argumento."},
+
+ //Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "El valor del atributo 'name' del nombre xsl:processing-instruction no debe ser 'xml'"},
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "El valor del atributo ''name'' de xsl:processing-instruction debe ser un nombre NCName v\u00e1lido: {0}"},
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "No se puede agregar el atributo {0} despu\u00e9s de nodos hijos ni antes de generar un elemento.  El atributo no ser\u00e1 considerado"},
+
+  //Check: WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+
+  // Other miscellaneous text used inside the code...
+    { "ui_language", "es"},
+    { "help_language", "es"},
+    { "language", "es"},
+    { "BAD_CODE",
+      "El par\u00e1metro para crear el mensaje estaba fuera de los l\u00edmites"},
+    { "FORMAT_FAILED",
+      "Excepci\u00f3n generada durante la llamada messageFormat"},
+    { "version", ">>>>>>> Versi\u00f3n Xalan"},
+    { "version2", "<<<<<<<"},
+    { "yes", "s\u00ed"},
+    { "line", "L\u00ednea #"},
+    { "column", "Columna #"},
+    { "xsldone", "XSLProcessor: hecho"},
+    { "xslProc_option", "opciones de clase Proceso de la l\u00ednea de comandos Xalan-J:"},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT", "   [-OUT outputFileName]"},
+    { "optionLXCIN", "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT", "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER",
+      "   [nombre totalmente cualificado -PARSER de clase de v\u00ednculo de analizador sint\u00e1ctico]"},
+    { "optionE",
+     "   [-E (No expandir refs de entidad)]"},
+    { "optionV",
+     "   [-E (No expandir refs de entidad)]"},
+    {"optionQC",
+      "   [-QC (Advertencias silenciosas de conflictos de patrones)]"},
+    {"optionQ",
+     "   [-Q  (Modo silencioso)]"},
+    { "optionLF",
+      "   [-LF (Utilizar cambios de l\u00ednea s\u00f3lo en la salida {el valor predeterminado es CR/LF})]"},
+    { "optionCR",
+      "   [-CR (Utilizar retornos de carro s\u00f3lo en la salida {el valor predeterminado es CR/LF})]"},
+    { "optionESCAPE",
+      "   [-ESCAPE (\u00bfCu\u00e1les son los caracteres de escape? {el valor por defecto es <>&\"\'\\r\\n}]"},
+    { "optionINDENT",
+      "   [-INDENT (Controlar el n\u00famero de espacios de indentaci\u00f3n {el valor por defecto es 0})]"},
+    { "optionTT",
+      "   [-TT (Rastrear las plantillas seg\u00fan se vayan invocando.)]"},
+    { "optionTG",
+      "   [-TG (Rastrear cada suceso de generaci\u00f3n.)]"},
+    {"optionTS",
+     "   [-TS (Rastrear cada suceso de selecci\u00f3n.)]"},
+    { "optionTTC",
+      "   [-TTC (Rastrear las plantillas hijas seg\u00fan se vayan procesando.)]"},
+    { "optionTCLASS",
+      "   [-TCLASS (Clase TraceListener para las extensiones de rastreo.)]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE (Establecer si se realiza la validaci\u00f3n.  El valor predeterminado de la validaci\u00f3n es off.)]"},
+    {"optionEDUMP",
+      "   [-EDUMP {nombre de archivo opcional} (Hacer volcado de pila en caso de error.)]"},
+    { "optionXML",
+      "   [-XML (Utilizar el formateador XML y agregar la cabecera de XML.)]"},
+    { "optionTEXT",
+      "   [-TEXT (Utilizar el formateador de texto sencillo.)]"},
+    { "optionHTML",
+     "   [-HTML (Utilizar el formateador HTML.)]"},
+    {"optionPARAM",
+      "   [expresi\u00f3n de nombre -PARAM (Establecer un par\u00e1metro de hoja de estilo)]"},
+    { "noParsermsg1",
+     "Ha fallado el proceso XSL."},
+    { "noParsermsg2",
+     "** No se ha encontrado el analizador sint\u00e1ctico **"},
+    { "noParsermsg3",
+     "Comprobar classpath."},
+    { "noParsermsg4",
+      "Si no tiene el analizador sint\u00e1ctico XML para Java de IBM puede cargarlo de "},
+    { "noParsermsg5",
+      "AlphaWorks de IBM: http://www.alphaworks.ibm.com/formula/xml"},
+    { "optionURIRESOLVER",
+     "   [nombre de clase completo -URIRESOLVER (Utilizar URIResolver para convertir los URIs)]"},
+    { "optionENTITYRESOLVER",
+     "   [nombre de clase completo -ENTITYRESOLVER (Utilizar EntityResolver para convertir las entidades)]"},
+    {"optionCONTENTHANDLER",
+     "   [nombre de clase completo -CONTENTHANDLER (Utilizar ContentHandler para serializar la salida)]"},
+    {"optionLINENUMBERS",
+     "   [-L utilizar n\u00fameros de l\u00edneas para el documento fuente]"},
+		
+    //Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+     " [-MEDIA mediaType (utilice un atributo media para buscar las hojas de estilo asociadas con un documento.)]"},
+    { "optionFLAVOR",
+     " [-FLAVOR flavorName (utilice expl\u00edcitamente s2s=SAX o d2d=DOM para la transformaci\u00f3n.)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+     " [-DIAG (la impresi\u00f3n tard\u00f3 milisegundos.)]"},
+    {"optionINCREMENTAL",
+     " [-INCREMENTAL (solicitar una construcci\u00f3n DTM incremental estableciendo http://xml.apache.org/xalan/features/incremental como Verdadero.)]"},
+    { "optionNOOPTIMIMIZE",
+     " [-NOOPTIMIMIZE (solicitar no optimizar la hoja de estilo estableciendo http://xml.apache.org/xalan/features/incremental a Falso.)]"},
+    { "optionRL",
+     " [-RL recursionlimit (afirmar l\u00edmite num\u00e9rico en la profundidad de recursividad de la hoja de estilo.)]"},
+    { "optionXO",
+     " [-XO [transletName] (asignar nombre al translet generado)]"},
+    {"optionXD",
+     " [-XD destinationDirectory (especifica un directorio de destino para translet)]"},
+    { "optionXJ",
+     " [-XJ jarfile (empaqueta clases translet en un archivo JAR denominado <archivoJAR>)]"},
+    { "optionXP",
+     " [-XP package (especifica un prefijo de nombre de paquete para todas las clases translet generadas)]"}
+
+
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#error";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "Error: ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "Advertencia: ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "PATR\u00d3N ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_fr.java b/src/org/apache/xalan/res/XSLTErrorResources_fr.java
new file mode 100644
index 0000000..77e5b45
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_fr.java
@@ -0,0 +1,2287 @@
+/*
+ * %W% %E%
+ *
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+
+public class XSLTErrorResources_fr extends XSLTErrorResources
+{
+
+   /** Maximum error messages, this is needed to keep track of the number of messages.    */
+   public static final int MAX_CODE = 253;
+
+   /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+    public static final int MAX_WARNING = 29;
+
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  public static final Object[][] contents = {
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //public static final int ERROR0000 = 0;
+
+  {
+    "ERROR0000", "{0}"},
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+  {
+    ER_NO_CURLYBRACE,
+      "Erreur : L\u2019expression ne peut pas contenir '{'"},
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0} dispose d\u2019un attribut non autoris\u00e9 : {1}"},
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "sourceNode est vide dans xsl:apply-imports!"},
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+  {
+    ER_CANNOT_ADD, "Impossible d\u2019ajouter {0} \u00e0 {1}"},
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "sourceNode est vide dans handleApplyTemplatesInstruction!"},
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+  {
+    ER_NO_NAME_ATTRIB, "{0} doit disposer d\u2019un attribut name."},
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "Impossible de trouver le mod\u00e8le : {0}"},
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "Impossible de r\u00e9soudre le nom AVT dans xsl:call-template."},
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+  {
+    ER_REQUIRES_ATTRIB, "{0} requiert l\u2019attribut : {1}"},
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} doit disposer de l\u2019attribut ''test''."},
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "Valeur incorrecte pour l\u2019attribut level : {0}"},
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "Le nom de processing-instruction ne peut pas \u00eatre 'xml'"},
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "Le nom de processing-instruction doit \u00eatre un nom sans deux points correct : {0}"},
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0} doit disposer d\u2019un attribut conforme s\u2019il a un mode."},
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} requiert soit un nom soit un attribut conforme."},
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "Impossible de r\u00e9soudre le pr\u00e9fixe d'espace de noms : {0}"},
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space dispose d\u2019une valeur non autoris\u00e9e : {0}"},
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+  {
+    ER_NO_OWNERDOC,
+      "Le n\u0153ud enfant ne dispose pas d\u2019un document propri\u00e9taire !"},
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "Erreur ElemTemplateElement : {0}"},
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+  {
+    ER_NULL_CHILD, "Tentative d\u2019ajout d\u2019un enfant vide !"},
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0} requiert un attribut select."},
+
+  /** ER_NEED_TEST_ATTRIB          */
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when doit disposer d\u2019un attribut 'test'."},
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param doit disposer d\u2019un attribut 'name'."},
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "Le contexte ne dispose pas d\u2019un document propri\u00e9taire !"},
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "Impossible de cr\u00e9er XML TransformerFactory Liaison : {0}"},
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: \u00e9chec du traitement."},
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan: \u00e9chec."},
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "Encodage non pris en charge : {0}"},
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "Impossible de cr\u00e9er TraceListener : {0}"},
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key requiert un attribut 'name' !"},
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key requiert un attribut 'match' !"},
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key requiert un attribut 'use' !"},
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} requiert un attribut ''elements'' !"},
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} attribut ''prefix'' manquant"},
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+  {
+    ER_BAD_STYLESHEET_URL, "L\u2019URL de la feuille de style n\u2019est pas correct : {0}"},
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+  {
+    ER_FILE_NOT_FOUND, "Le fichier de feuille de style est introuvable : {0}"},
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+  {
+    ER_IOEXCEPTION,
+      "Exception d\u2019E/S avec le fichier de feuille de style : {0}"},
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) Impossible de trouver l\u2019attribut href pour {0}"},
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} est directement ou indirectement inclus dans lui-m\u00eame !"},
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "Erreur StylesheetHandler.processInclude, {0}"},
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} attribut ''lang'' manquant"},
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) \u00e9l\u00e9ment {0} mal plac\u00e9 ?? El\u00e9ment ''component'' de container manquant"},
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "Sortie possible uniquement vers Element, DocumentFragment, Document ou PrintWriter."},
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+  {
+    ER_PROCESS_ERROR, "Erreur StylesheetRoot.process"},
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+  {
+    ER_UNIMPLNODE_ERROR, "Erreur UnImplNode : {0}"},
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "Erreur ! Impossible de trouver l\u2019expression de s\u00e9lection xpath (-select)."},
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "Impossible de mettre en s\u00e9rie un processeur XSL !"},
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "Entr\u00e9e de la feuille de style non sp\u00e9cifi\u00e9e !"},
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "Echec de traitement de la feuille de style !"},
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+  {
+    ER_COULDNT_PARSE_DOC, "Impossible d\u2019analyser le document {0} !"},
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "Impossible de trouver le fragment\u00a0: {0}"},
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "Le n\u0153ud identifi\u00e9 par l\u2019identificateur de fragments n\u2019est pas un \u00e9lement : {0}"},
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each doit disposer d\u2019un attribut match ou name"},
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "templates doit disposer d\u2019un attribut match ou name"},
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "Impossible de cloner un fragment de document !"},
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "Impossible de cr\u00e9er un objet dans l\u2019arbre de r\u00e9sultats : {0}"},
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "xml:space dispose d\u2019une valeur non autoris\u00e9e dans la source XML : {0}"},
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "Il n\u2019existe pas de d\u00e9claration xsl:key pour for {0} !"},
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+  {
+    ER_CANT_CREATE_URL, "Erreur! Impossible de cr\u00e9er une url pour\u00a0: {0}"},
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions n\u2019est pas pris en charge"},
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+  {
+    ER_PROCESSOR_ERROR, "Erreur XSLT TransformerFactory"},
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} non autoris\u00e9 dans une feuille de style !"},
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "result-ns n\u2019est plus pris en charge ! Utilisez xsl:output \u00e0 la place."},
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "default-space n\u2019est plus pris en charge ! Utilisez xsl:strip-space ou xsl:preserve-space \u00e0 la place."},
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result n\u2019est plus pris en charge ! Utilisez xsl:output \u00e0 la place."},
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} dispose d\u2019un attribut non autoris\u00e9 : {1}"},
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "El\u00e9ment XSL inconnu : {0}"},
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort ne peut \u00eatre utilis\u00e9 qu\u2019avec xsl:apply-templates ou xsl:for-each."},
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) xsl:when mal plac\u00e9 !"},
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:choose n\u2019est pas parent de xsl:when !"},
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) xsl:otherwise mal plac\u00e9 !"},
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:choose n\u2019est pas parent de xsl:otherwise !"},
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} n\u2019est pas admis dans un mod\u00e8le !"},
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} pr\u00e9fixe de l\u2019espace de noms de l\u2019extension {1} inconnu"},
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) Les importations ne peuvent intervenir qu\u2019en tant que premiers \u00e9l\u00e9ments de la feuille de style !"},
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} est en train de s\u2019importer directement ou indirectement !"},
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space dispose d\u2019une valeur non autoris\u00e9e : {0}"},
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "Echec de processStylesheet !"},
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+  {
+    ER_SAX_EXCEPTION, "Exception SAX"},
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "Fonction non prise en charge !"},
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+  {
+    ER_XSLT_ERROR, "Erreur XSLT"},
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "Le symbole d\u2019une devise n\u2019est pas admise dans une cha\u00eene conforme au mod\u00e8le"},
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "La fonction Document n\u2019est pas prise en charge dans la feuille de style DOM !"},
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "Impossible de r\u00e9soudre le pr\u00e9fixe d\u2019un r\u00e9solveur sans pr\u00e9fixe !"},
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Redirect extension : impossible de r\u00e9cup\u00e9rer le nom de fichier \u2013 l\u2019attribut file ou select doit retourner une cha\u00eene valide."},
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "Impossible de cr\u00e9er FormatterListener dans Redirect extension !"},
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "Le pr\u00e9fixe dans exclude-result-prefixes n\u2019est pas valide : {0}"},
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+  {
+    ER_MISSING_NS_URI,
+      "URI d\u2019espace de noms manquant pour le pr\u00e9fixe sp\u00e9cifi\u00e9"},
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "Argument manquant pour l\u2019option : {0}"},
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+  {
+    ER_INVALID_OPTION, "Option incorrecte : {0}"},
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "Cha\u00eene de format mal form\u00e9e : {0}"},
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet requiert un attribut 'version' !"},
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "L\u2019attribut : {0} dispose d\u2019une valeur non autoris\u00e9e : {1}"},
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose requiert un xsl:when"},
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports n\u2019est pas admis dans un xsl:for-each"},
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "Impossible d'utiliser DTMLiaison pour un noeud de sortie DOM ... Utilisez org.apache.xpath.DOM2Helper \u00e0 la place !"},
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "Impossible d'utiliser DTMLiaison pour un noeud d'entr\u00e9e DOM... Utilisez org.apache.xpath.DOM2Helper \u00e0 la place!"},
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "Echec de l\u2019appel de l\u2019\u00e9l\u00e9ment d\u2019extension : {0}"},
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "Le pr\u00e9fixe doit se r\u00e9soudre en espace de nom : {0}"},
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Substitut UTF-16 incorrect d\u00e9tect\u00e9 : {0} ?"},
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} s\u2019est utilis\u00e9 lui-m\u00eame, ce qui va entra\u00eener une boucle sans fin."},
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "Impossible de m\u00e9langer des entr\u00e9es non Xerces-DOM avec des sorties Xerces-DOM !"},
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "Dans ElemTemplateElement.readObject : {0}"},
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "Plusieurs mod\u00e8les trouv\u00e9s nomm\u00e9s : {0}"},
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+  {
+    ER_INVALID_KEY_CALL,
+      "Appel de fonction incorrect : les appels de recursive key() ne sont pas autoris\u00e9s"},
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+  {
+    ER_REFERENCING_ITSELF,
+      "La variable {0} est en train de se r\u00e9f\u00e9rencer directement ou indirectement !"},
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "Le n\u0153ud d\u2019entr\u00e9e ne peut pas \u00eatre vide au niveau d\u2019une source DOM pour newTemplates !"},
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"Fichier de classe introuvable pour l\u2019option {0}"},
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"El\u00e9ment requis introuvable : {0}"},
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream ne peut pas \u00eatre vide"},
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI ne peut pas \u00eatre vide"},
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"File ne peut pas \u00eatre vide"},
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource ne peut pas \u00eatre vide"},
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"Impossible d\u2019\u00e9craser la cause"},
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"Impossible d\u2019initialiser BSF Manager"},
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"Impossible de compiler l\u2019extension"},
+
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "Impossible de cr\u00e9er l\u2019extension : {0} \u00e0 cause de : {1}"},
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "L\u2019appel de la m\u00e9thode d\u2019instance \u00e0 la m\u00e9thode {0} requiert une instance Object comme premier argument"},
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "Nom d\u2019\u00e9l\u00e9ment sp\u00e9cifi\u00e9 incorrect {0}"},
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "La m\u00e9thode de nom d\u2019\u00e9l\u00e9ment doit \u00eatre statique {0}"},
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "Fonction d\u2019extension {0} : {1} inconnue"},
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "Plusieurs occurrences exactes pour le constructeur pour {0}"},
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "Plusieurs occurrences exactes pour la m\u00e9thode {0}"},
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             " Plusieurs occurrences exactes pour la m\u00e9thode d\u2019\u00e9l\u00e9ments {0}"},
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "Contexte incorrect pour l\u2019\u00e9valuation {0}"},
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+  {
+    ER_POOL_EXISTS,
+             "Pool existe d\u00e9j\u00e0"},
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+  {
+    ER_NO_DRIVER_NAME,
+             "Aucun nom de pilote sp\u00e9cifi\u00e9"},
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+  {
+    ER_NO_URL,
+             "Aucune URL sp\u00e9cifi\u00e9e"},
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "La taille du Pool est inf\u00e9rieure \u00e0 un !"},
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+  {
+    ER_INVALID_DRIVER,
+             "Le nom de pilote sp\u00e9cifi\u00e9 n\u2019est pas correct !"},
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "Impossible de trouver la feuille de style racine !"},
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "Valeur non autoris\u00e9e pour xml:space"},
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "Echec de processFromNode"},
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "La ressource [ {0} ] n\u2019a pas pu \u00eatre charg\u00e9e : {1} \n {2} \t {3}"},
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "Taille du tampon <=0"},
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "Erreur inconnue lors de l\u2019appel de l\u2019extension"},
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "Le pr\u00e9fixe {0} de dispose pas d\u2019une d\u00e9claration d\u2019espaces de noms correspondante"},
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "Contenu d\u2019\u00e9l\u00e9ment non autoris\u00e9 pour lang=javaclass {0}"},
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "Ach\u00e8vement dirig\u00e9 de la feuille de style"},
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+  {
+    ER_ONE_OR_TWO,
+        "1 ou 2"},
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+  {
+    ER_TWO_OR_THREE,
+        "2 ou 3"},
+
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "Impossible de charger {0} (v\u00e9rifier le CHEMIN DE CLASSE). Utilisation des mod\u00e8les par d\u00e9faut"},
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "Impossible d\u2019initialiser les mod\u00e8les par d\u00e9faut"},
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+  {
+    ER_RESULT_NULL,
+        "Le r\u00e9sultat ne peut pas \u00eatre vide"},
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "Le r\u00e9sultat ne peut pas \u00eatre d\u00e9fini"},
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "Aucune sortie sp\u00e9cifi\u00e9e"},
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "Transformation impossible en un r\u00e9sultat de type {0}"},
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "Transformation impossible d\u2019une source de type {0}"},
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "Gestionnaire de contenu vide"},
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Gestionnaire d\u2019erreurs vide"},
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "L\u2019analyse ne peut \u00eatre appel\u00e9e si le gestionnaire de contenu n\u2019a pas \u00e9t\u00e9 d\u00e9fini"},
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "Aucun parent pour le filtre"},
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "Aucune feuille de style trouv\u00e9e dans: {0}, media= {1}"},
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "Aucun xml-stylesheet PI trouv\u00e9 dans : {0}"},
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "Aucune mise en \u0153uvre par d\u00e9faut trouv\u00e9e"},
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0}) non pris en charge pour le moment"},
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "Impression plus importante que l\u2019emplacement"},
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "Coroutine indisponible, id={0}"},
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager a re\u00e7u une requ\u00eate co_exit()"},
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "Echec de co_joinCoroutineSet()"},
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+  {
+    ER_COROUTINE_PARAM,
+       "Erreur de param\u00e8tre Coroutine ({0})"},
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: R\u00e9ponses de Parser doTerminate {0}"},
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "parse ne peut pas \u00eatre appel\u00e9 pendant l\u2019op\u00e9ration d\u2019analyse"},
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Erreur : l\u2019it\u00e9rateur saisi pour l\u2019axe {0} n\u2019est pas mis en oeuvre"},
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Erreur : l\u2019it\u00e9rateur pour l\u2019axe {0} n\u2019est pas mis en oeuvre "},
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "Clone d\u2019it\u00e9rateur non pris en charge"},
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "Type d\u2019axe transversal inconnu : {0}"},
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "Axe transversal non pris en charge : {0}"},
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "Aucun ID DTM disponible"},
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+  {
+    ER_NOT_SUPPORTED,
+       "Non pris en charge : {0}"},
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+  {
+    ER_NODE_NON_NULL,
+       "Le n\u0153ud ne doit pas \u00eatre vide pour getDTMHandleFromNode"},
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "Impossible de r\u00e9soudre le noeud en descripteur"},
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "startParse ne peut pas \u00eatre appel\u00e9 pendant l\u2019analyse"},
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse requiert un SAXParser non vide"},
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "Impossible d\u2019initialiser l\u2019analyseur avec"},
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "La valeur pour la propri\u00e9t\u00e9 {0} doit \u00eatre une instance bool\u00e9enne"},
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "Exception\u00a0de cr\u00e9ation d\u2019une nouvelle instance pour le pool"},
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "Le chemin contient une s\u00e9quence de remplacement incorrecte"},
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+  {
+    ER_SCHEME_REQUIRED,
+       "Le mod\u00e8le est requis !"},
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "Aucun mod\u00e8le trouv\u00e9 dans l\u2019URI : {0}"},
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+  {
+    ER_NO_SCHEME_INURI,
+       "Aucun mod\u00e8le trouv\u00e9 dans l\u2019URI"},
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "Le chemin contient des caract\u00e8res incorrects : {0}"},
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "Impossible de d\u00e9finir le mod\u00e8le \u00e0 partir d\u2019une cha\u00eene vide"},
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "Le mod\u00e8le n\u2019est pas conforme."},
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "L\u2019h\u00f4te n\u2019est pas constitu\u00e9 d\u2019une adresse bien form\u00e9e"},
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "Le port ne peut pas \u00eatre d\u00e9fini lorsque l\u2019h\u00f4te est vide"},
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+  {
+    ER_INVALID_PORT,
+       "Num\u00e9ro de port incorrect"},
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "Le fragment ne peut \u00eatre d\u00e9fini que pour un URI g\u00e9n\u00e9rique"},
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "Le fragment ne peut pas \u00eatre d\u00e9fini lorsque le chemin est vide"},
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "Le fragment contient des caract\u00e8res incorrects"},
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+  {
+    ER_PARSER_IN_USE,
+        "L\u2019analyseur est d\u00e9j\u00e0 en cours d\u2019utilisation"},
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "Impossible de modifier {0} {1} pendant la phase d\u2019analyse"},
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "Lien de causalit\u00e9 vers soi impossible"},
+  
+   /* This key/message changed ,NEED ER_COULD_NOT_FIND_EXTERN_SCRIPT: Pending,Ramesh */
+
+   /** src attribute not yet supported for  */
+  //public static final int ER_SRC_ATTRIB_NOT_SUPPORTED = 195;
+
+  {
+    "ER_SRC_ATTRIB_NOT_SUPPORTED",
+       "L\u2019attribut src n\u2019est pas encore pris en charge pour {0}"},
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "Impossible de trouver la ressource [ {0} ].\n {1}"},
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "La propri\u00e9t\u00e9 de sortie n\u2019a pas \u00e9t\u00e9 reconnue : {0}"},
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "Les informations sur l'utilisateur ne peuvent pas \u00eatre sp\u00e9cifi\u00e9es si l\u2019h\u00f4te n\u2019est pas sp\u00e9cifi\u00e9"},
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "Le port ne peut pas \u00eatre sp\u00e9cifi\u00e9 si l\u2019h\u00f4te n\u2019est pas sp\u00e9cifi\u00e9"},
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "La cha\u00eene de requ\u00eate ne peut pas \u00eatre sp\u00e9cifi\u00e9e dans le chemin et dans la cha\u00eene de requ\u00eate"},
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "Le fragment ne peut pas \u00eatre sp\u00e9cifi\u00e9 dans le chemin et dans le fragment"},
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "Impossible d\u2019initialiser l\u2019URI avec des param\u00e8tres vides"},
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "Echec de cr\u00e9ation de l\u2019instance ElemLiteralResult"},
+
+  // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. 
+  
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "La valeur de {0} doit contenir un nombre analysable"}, 
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        "La valeur pour {0} doit \u00eatre \u00e9quivalente \u00e0 oui ou non"},
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        "Echec d\u2019appel de la m\u00e9thode {0}"},
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "Echec de cr\u00e9ation de l\u2019instance ElemTemplateElement"},
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "Les caract\u00e8res ne sont pas admis \u00e0 ce niveau du document"},
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "L\u2019attribut \"{0}\" n\u2019est pas admis dans l\u2019\u00e9l\u00e9ment {1} !"},
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "M\u00e9thode non prise en charge pour le moment"},
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+  {
+    ER_BAD_VALUE,
+     "{0} valeur incorrecte {1}"},
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "Valeur de l\u2019attribut {0} introuvable"},
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "Valeur de l\u2019attribut {0} non reconnue"},
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter ne peut pas \u00eatre relanc\u00e9 pour le moment"},
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader pas avant la requ\u00eate startParse"},
+
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "Tentative de g\u00e9n\u00e9ration d'un pr\u00e9fixe d'expace de nom avec un URI nul"},
+
+   //XALAN_MANTIS CHANGES: Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11) 
+
+   /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217; 
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "Tentative de formatage d'un nombre sup\u00e9rieur \u00e0 l'entier le plus long"},
+
+  //ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "Classe de pilotes SAX1 {0} introuvable"},
+
+  //ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "La classe de pilotes SAX1 {0} a \u00e9t\u00e9 trouv\u00e9e mais n''a pas \u00e9t\u00e9 charg\u00e9e"},
+
+  //ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "La classe de pilotes SAX1 {0} a \u00e9t\u00e9 charg\u00e9e mais n''a pas \u00e9t\u00e9 instanci\u00e9e"},
+
+
+  // ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "La classe de pilotes SAX1 {0} n''impl\u00e9mente pas org.xml.sax.Parser"},
+
+  // ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "Les propri\u00e9t\u00e9s du syst\u00e8me org.xml.sax.parser n'ont pas \u00e9t\u00e9 sp\u00e9cifi\u00e9es"},
+
+  //ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "L'argument de l'analyseur ne doit pas \u00eatre nul"},
+
+
+  // ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+  {
+    ER_FEATURE,
+     "Fonction : a {0}"},
+
+
+  // ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+  {
+    ER_PROPERTY,
+     "Propri\u00e9t\u00e9 : a {0}"},
+
+  // ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "Convertisseur d'entit\u00e9 nul"},
+
+  // ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "Gestionnaire de DTD nul"},
+
+  // No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "Aucun nom de pilote sp\u00e9cifi\u00e9 !"},
+
+
+  // No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+  {
+    ER_NO_URL_SPECIFIED,
+     "Aucun URL sp\u00e9cifi\u00e9 !"},
+
+
+  // Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "La taille du pool est inf\u00e9rieure \u00e0 1 !"},
+
+
+  // Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+  {
+    ER_INVALID_DRIVER_NAME,
+     "Nom de pilote sp\u00e9cifi\u00e9 incorrect !"},
+
+
+
+  // ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+  {
+    ER_ERRORLISTENER,
+     "ErrorListener"},
+
+
+  // Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "Erreur du programmeur ! expr n'a pas de parent ElemTemplateElement !"},
+
+
+  // Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "Assertion du programmeur dans RundundentExprEliminator : {0}"},
+
+  // Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "La coupure d'axe n'est pas prise en charge : {0}"},
+
+  // ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+  {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "ListingErrorHandler a \u00e9t\u00e9 cr\u00e9\u00e9 avec PrintWriter nul !"},
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "{0} n'est pas admis \u00e0 cet endroit de la feuille de style !"},
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "Le texte sans espace blanc n'est pas admis \u00e0 cet endroit de la feuille de style !"},
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+  {
+    INVALID_TCHAR,
+     "Valeur incorrecte : {1} est utilis\u00e9 pour l'attribut CHAR : {0}.  Un attribut de type CHAR doit \u00eatre compos\u00e9 d'un seul caract\u00e8re !"},
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "SystemId inconnu"},
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+  {
+    ER_LOCATION_UNKNOWN,
+     "Emplacement de l'erreur inconnu"},
+
+  // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+  {
+    INVALID_QNAME,
+     "Valeur incorrecte :a {1} utilis\u00e9 pour l''attribut QNAME :a {0}"},
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+  {
+    INVALID_ENUM,
+     "Valeur incorrecte :a {1} utilis\u00e9 pour l''attribut ENUM :a {0}.  Les valeurs correctes sont :a {2}."},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+  {
+    INVALID_NMTOKEN,
+     "Valeur incorrecte :a {1} utilis\u00e9 pour l''attribut NMTOKEN :a {0} "},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+  {
+    INVALID_NCNAME,
+     "Valeur incorrecte :a {1} utilis\u00e9 pour l''attribut NCNAME :a {0} "},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+  {
+    INVALID_BOOLEAN,
+     "Valeur incorrecte :a {1} utilis\u00e9 pour l''attribut boolean :a {0} "},
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+  {
+    INVALID_NUMBER,
+     "Valeur incorrecte :a {1} utilis\u00e9 pour l''attribut number :a {0} "},
+
+
+  // End of shared codes...
+
+  // Note to translators:  A "match pattern" is a special form of XPath expression
+  // that is used for matching patterns.  The substitution text is the name of
+  // a function.  The message indicates that when this function is referenced in
+  // a match pattern, its argument must be a string literal (or constant.)
+  // ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+  {
+    ER_ARG_LITERAL,
+     "L''argument de {0} de la structure de comparaison doit \u00eatre un litt\u00e9ral."},
+
+  // Note to translators:  The following message indicates that two definitions of
+  // a variable.  A "global variable" is a variable that is accessible everywher
+  // in the stylesheet.
+  // ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "Duplication de la d\u00e9claration de variable globale."},
+
+
+  // Note to translators:  The following message indicates that two definitions of
+  // a variable were encountered.
+  // ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+  {
+    ER_DUPLICATE_VAR,
+     "Duplication de la d\u00e9claration de variable."},
+
+  // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "xsl:template doit avoir un attribut name ou match (ou les deux)"},
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+  {
+    ER_INVALID_PREFIX,
+     "Le pr\u00e9fixe de exclude-result-prefixes est incorrect :a {0}"},
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+  {
+    ER_NO_ATTRIB_SET,
+     "L''ensemble d'attributs {0} n'existe pas"},
+
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "'}' trouv\u00e9 mais aucun mod\u00e8le d\u2019attribut ouvert !"},
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "Attention : l\u2019attribut count ne correspond pas \u00e0 un anc\u00eatre dans xsl:number! Target = {0}"},
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "Ancienne syntaxe : le nom de l\u2019attribut 'expr' \u00e9t\u00e9 chang\u00e9 par 'select'."},
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan ne g\u00e8re pas encore la partie locale du nom dans la fonction format-number."},
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "Attention : Impossible de trouver la partie locale du nom pour xml:lang={0}"},
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "Impossible de cr\u00e9er une URL \u00e0 partir de : {0}"},
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "Impossible de charger le document demand\u00e9 : {0}"},
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "Impossible de trouver Collator pour <sort xml:lang={0}"},
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "Ancienne syntaxe : les fonctions doivent utiliser une url de {0}"},
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "Encodage non pris en charge : {0}, en utilisant UTF-8"},
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      " Encodage non pris en charge: {0}, en utilisant Java {1}"},
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "Conflits de sp\u00e9cificit\u00e9 d\u00e9tect\u00e9s : {0}, le dernier trouv\u00e9 dans la feuille de style sera utilis\u00e9."},
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= Analyse et pr\u00e9paration {0} =========="},
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+  {
+    WG_ATTR_TEMPLATE, "Mod\u00e8le d\u2019attribut, {0}"},
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "Conflit de correspondance entre xsl:strip-space et xsl:preserve-space"},
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan ne g\u00e8re pas encore l\u2019attribut {0} !"},
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "Aucune d\u00e9claration trouv\u00e9e pour le format d\u00e9cimal : {0}"},
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+  {
+    WG_OLD_XSLT_NS, "Espace de noms XSLT manquant ou incorrect. "},
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "Seule une d\u00e9claration xsl:decimal-format par d\u00e9faut est autoris\u00e9e."},
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "Les noms xsl:decimal-format doivent \u00eatre uniques. Le nom \"{0}\" appara\u00eet en double."},
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} dispose d\u2019un attribut non autoris\u00e9 : {1}"},
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "Impossible de r\u00e9soudre de pr\u00e9fixe d\u2019espace de noms : {0}. Le n\u0153ud sera ignor\u00e9."},
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet requiert un attribut 'version' !"},
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "Nom d\u2019attribut non autoris\u00e9 : {0}"},
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "La valeur utilis\u00e9e pour l\u2019attribut {0} n\u2019est pas autoris\u00e9e : {1}"},
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "L\u2019ensemble de n\u0153uds r\u00e9sultant d\u2019un deuxi\u00e8me argument de la fonction document est vide. Le premier argument sera utilis\u00e9."},
+
+  // Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "La valeur de l'attribut 'name' de xsl:processing-instruction ne doit pas \u00eatre 'xml'"},
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "La valeur de l''attribut ''name'' de xsl:processing-instruction doit \u00eatre un NCName valide :a {0}"},
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "Impossible d''ajouter l''attribut {0}apr\u00e8s les noeuds enfants ou avant qu'un \u00e9l\u00e9ment ne soit produit.  L'attribut est ignor\u00e9."},
+
+  // WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+  // Other miscellaneous text used inside the code...
+    { "ui_language", "fr"},
+    { "help_language", "fr"},
+    { "language", "fr"},
+    { "BAD_CODE",
+      "Param\u00e8tre pour createMessage hors limites"},
+    { "FORMAT_FAILED",
+      "Exception \u00e9mise pendant l\u2019appel de messageFormat "},
+    {"version",
+      ">>>>>>> Version Xalan "},
+    { "version2",  "<<<<<<<"},
+    {"yes",  "oui"},
+    { "line", "N\u00b0 de ligne"},
+    {"column", "N\u00b0 de colonne"},
+    {"xsldone", "XSLProcessor: termin\u00e9"},
+    {"xslProc_option", "Options de classe de traitement de la ligne de commande Xalan-J :"},
+    {"optionIN",  "    -IN inputXMLURL"},
+    {  "optionXSL",  "   [-XSL XSLTransformationURL]"},
+    { "optionOUT",  "   [-OUT outputFileName]"},
+    { "optionLXCIN", "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT",
+      "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER",
+      "   [-PARSER nom de classe qualifi\u00e9 pour la liaison de l\u2019analyseur]"},
+    { "optionE",
+      "   [-E (Ne pas d\u00e9velopper les r\u00e9f\u00e9rences d\u2019entit\u00e9s)]"},
+    { "optionV",  "   [-E (Ne pas d\u00e9velopper les r\u00e9f\u00e9rences d\u2019entit\u00e9s)]"},
+    { "optionQC",
+      "   [-QC (Avertissements pour les conflits silencieux de formes)]"},
+    {"optionQ",
+      "   [-Q  (Mode silencieux)]"},
+    { "optionLF",
+      "   [-LF (Utilisation des sauts de ligne uniquement en sortie {CR/LF par d\u00e9faut})]"},
+    { "optionCR",
+      "   [-CR (Utilisation des retours chariot uniquement en sortie {CR/LF par d\u00e9faut})]"},
+    {  "optionESCAPE",
+      "   [-ESCAPE (Caract\u00e8res \u00e0 remplacer {<>&\"\'\\r\\n par d\u00e9faut}]"},
+    {  "optionINDENT",
+      "   [-INDENT (Contr\u00f4le le nombre d\u2019espaces pour le retrait {0 par d\u00e9faut})]"},
+    {  "optionTT",
+      "   [-TT (Trace des mod\u00e8les lors de leur appel.)]"},
+    { "optionTG",
+      "   [-TG (Trace de chaque cr\u00e9ation d\u2019\u00e9v\u00e9nement.)]"},
+    { "optionTS",
+      "   [-TS (Trace de chaque s\u00e9lection d\u2019\u00e9v\u00e9nement.)]"},
+    { "optionTTC",
+      "   [-TTC (Trace de chaque mod\u00e8le enfant lorsqu\u2019ils sont trait\u00e9s.)]"},
+    { "optionTCLASS",
+      "   [-TCLASS (Classe TraceListener pour les extensions de trace.)]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE (D\u00e9termine si la validation intervient. La validation est d\u00e9sactiv\u00e9e par d\u00e9faut.)]"},
+    { "optionEDUMP",
+      "   [-EDUMP {optional filename} (Permet d\u2019acc\u00e9der \u00e0 l\u2019emplacement de l\u2019erreur.)]"},
+    { "optionXML",
+      "   [-XML (Utilisation d\u2019un formateur XML et ajout d\u2019en-t\u00eate XML.)]"},
+    {  "optionTEXT",
+      "   [-TEXT (Utilisation d\u2019un formateur de texte simple.)]"},
+    { "optionHTML", "   [-HTML (Utilisation d\u2019un formateur HTML.)]"},
+    { "optionPARAM",
+      "   [-PARAM name expression (D\u00e9finition d\u2019un param\u00e8tre de feuille de style)]"},
+    {  "noParsermsg1",
+      "Echec de XSL Process."},
+    {  "noParsermsg2",
+      "** Impossible de trouver l\u2019analyseur **"},
+    { "noParsermsg3",
+      "Veuillez v\u00e9rifier votre chemin de classe."},
+    {  "noParsermsg4",
+      " Si vous ne disposez pas de l\u2019analyseur XML d\u2019IBM pour Java, vous pouvez le t\u00e9l\u00e9charger \u00e0 l\u2019adresse suivante "},
+    {  "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+    { "optionURIRESOLVER",
+      "   [-URIRESOLVER nom de classe complet (URIResolver \u00e0 utiliser pour r\u00e9soudre les URI)]"},
+    { "optionENTITYRESOLVER",
+      "   [-ENTITYRESOLVER nom de classe complet (EntityResolver \u00e0 utiliser pour r\u00e9soudre les entit\u00e9s)]"},
+    { "optionCONTENTHANDLER",
+      "   [-CONTENTHANDLER nom de classe complet (ContentHandler \u00e0 utiliser pour mettre en s\u00e9rie les sorties)]"},
+    { "optionLINENUMBERS",
+      "   [-L Utilisation des nombres de lignes pour le document source]"},
+
+//XALAN_MANTIS CHANGES: Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+      " [-MEDIA mediaType (utilisation de l'attribut media pour rechercher la feuille de style associ\u00e9e \u00e0 un document.)]"},
+    { "optionFLAVOR",
+     " [-FLAVOR flavorName (utilisation explicite de s2s=SAX ou d2d=DOM pour proc\u00e9der aux transformations.)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+      " [-DIAG (Impression du nombre global de millisecondes de la transformation.)]"},
+    {  "optionINCREMENTAL",
+     " [-INCREMENTAL (demande de construction DTM incr\u00e9mentielle en attribuant la valeur true \u00e0 http://xml.apache.org/xalan/features/incremental.)]"},
+    { "optionNOOPTIMIMIZE",
+     " [-NOOPTIMIMIZE (demande d'aucune optimisation de la feuille de style en attribuant la valeur false \u00e0 http://xml.apache.org/xalan/features/optimize.)]"},
+    { "optionRL",
+     " [-RL recursionlimit (assertion d'une limite num\u00e9rique sur la profondeur de r\u00e9cursion de la feuille de style.)]"},
+    { "optionXO",
+     " [-XO [transletName] (affectation du nom au translet g\u00e9n\u00e9r\u00e9)]"},
+    { "optionXD",
+     " [-XD destinationDirectory (sp\u00e9cification d'un r\u00e9pertoire de destination pour le translet)]"},
+    { "optionXJ",
+     " [-XJ jarfile (regroupe les classes de translet dans un fichier jar nomm\u00e9 <jarfile>)]"},
+    { "optionXP",
+     " [-XP package (sp\u00e9cifie un pr\u00e9fixe de nom de groupe pour toutes les classes de translet g\u00e9n\u00e9r\u00e9es)]"}
+
+
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#error";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "Erreur : ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "Attention : ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "FORME";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_it.java b/src/org/apache/xalan/res/XSLTErrorResources_it.java
new file mode 100644
index 0000000..1aede3e
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_it.java
@@ -0,0 +1,2864 @@
+/*
+* @(#)XSLTErrorResources_it.java	1.8 02/03/26
+* The Apache Software License, Version 1.1
+*
+*
+* Copyright (c) 1999 The Apache Software Foundation.  All rights 
+* reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer. 
+*
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in
+*    the documentation and/or other materials provided with the
+*    distribution.
+*
+* 3. The end-user documentation included with the redistribution,
+*    if any, must include the following acknowledgment:  
+*       "This product includes software developed by the
+*        Apache Software Foundation (http://www.apache.org/)."
+*    Alternately, this acknowledgment may appear in the software itself,
+*    if and wherever such third-party acknowledgments normally appear.
+*
+* 4. The names "Xalan" and "Apache Software Foundation" must
+*    not be used to endorse or promote products derived from this
+*    software without prior written permission. For written 
+*    permission, please contact apache@apache.org.
+*
+* 5. Products derived from this software may not be called "Apache",
+*    nor may "Apache" appear in their name, without prior written
+*    permission of the Apache Software Foundation.
+*
+* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+* SUCH DAMAGE.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation and was
+* originally based on software copyright (c) 2002, Sun Microsystems,
+* Inc., http://www.sun.com.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+
+import org.apache.xalan.templates.Constants;
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+
+public class XSLTErrorResources_it extends XSLTErrorResources
+{
+
+/** Maximum error messages, this is needed to keep track of the number of messages.    */
+ public static final int MAX_CODE = 253;          
+
+ /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+ public static final int MAX_WARNING = 29;
+
+ /** Maximum misc strings.   */
+ public static final int MAX_OTHERS = 55;
+
+ /** Maximum total warnings and error messages.          */
+ public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+ /** The lookup table for error messages.   */
+
+public static final Object[][] contents = {
+
+ /** Error message ID that has a null message, but takes in a single object.    */
+ //public static final int ERROR0000 = 0;
+ 
+
+ {
+   "ERROR0000", "{0}"},
+
+
+ /** ER_NO_CURLYBRACE          */
+ //public static final int ER_NO_CURLYBRACE = 1;
+
+
+ {
+   ER_NO_CURLYBRACE,
+     "Errore: Impossibile inserire '{' nell'espressione."},
+
+
+ /** ER_ILLEGAL_ATTRIBUTE          */
+ //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+
+ {
+   ER_ILLEGAL_ATTRIBUTE, "{0} ha un attributo illegale: {1}."},
+
+
+ /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+ //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+
+ {
+   ER_NULL_SOURCENODE_APPLYIMPORTS,
+     "sourceNode nullo in xsl:apply-imports"},
+
+
+ /** ER_CANNOT_ADD          */
+ //public static final int ER_CANNOT_ADD = 4;
+
+
+ {
+   ER_CANNOT_ADD, "Impossibile aggiungere {0} a {1}."},
+
+
+ /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+ //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+
+ {
+   ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+     "sourceNode nullo in handleApplyTemplatesInstruction."},
+
+
+ /** ER_NO_NAME_ATTRIB          */
+ //public static final int ER_NO_NAME_ATTRIB = 6;
+
+
+ {
+   ER_NO_NAME_ATTRIB, "{0} deve avere un attributo nome."},
+
+
+ /** ER_TEMPLATE_NOT_FOUND          */
+ //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+
+ {
+   ER_TEMPLATE_NOT_FOUND, "Impossibile trovare il modello denominato: {0}."},
+
+
+ /** ER_CANT_RESOLVE_NAME_AVT          */
+ //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+
+ {
+   ER_CANT_RESOLVE_NAME_AVT,
+     "Impossibile risolvere il nome AVT in xsl:call-template."},
+
+
+ /** ER_REQUIRES_ATTRIB          */
+ //public static final int ER_REQUIRES_ATTRIB = 9;
+
+
+ {
+   ER_REQUIRES_ATTRIB, "{0} richiede l'attributo: {1}."},
+
+
+ /** ER_MUST_HAVE_TEST_ATTRIB          */
+ //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+
+ {
+   ER_MUST_HAVE_TEST_ATTRIB,
+     "{0} deve avere un attributo ''test''."},
+
+
+ /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+ //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+
+ {
+   ER_BAD_VAL_ON_LEVEL_ATTRIB,
+     "Valore non valido su attributo livello: {0}"},
+
+
+ /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+ //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+
+ {
+   ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+     "Il nome dell'istruzione di elaborazione non pu\u00f2 essere 'xml'."},
+
+
+ /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+ //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+
+ {
+   ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+     "Il nome dell'istruzione di elaborazione deve essere un NCName valido: {0}."},
+
+
+ /** ER_NEED_MATCH_ATTRIB          */
+ //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+
+ {
+   ER_NEED_MATCH_ATTRIB,
+     "{0} deve avere un attributo corrispondenza se ha una modalit\u00e0."},
+
+
+ /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+ //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+
+ {
+   ER_NEED_NAME_OR_MATCH_ATTRIB,
+     "{0} richiede un attributo nome o corrispondenza."},
+
+
+ /** ER_CANT_RESOLVE_NSPREFIX          */
+ //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+
+ {
+   ER_CANT_RESOLVE_NSPREFIX,
+     "Impossibile risolvere il prefisso namespace: {0}."},
+
+
+ /** ER_ILLEGAL_VALUE          */
+ //public static final int ER_ILLEGAL_VALUE = 17;
+
+
+ {
+   ER_ILLEGAL_VALUE, "xml:space ha valore non valido: {0}."},
+
+
+ /** ER_NO_OWNERDOC          */
+ //public static final int ER_NO_OWNERDOC = 18;
+
+
+ {
+   ER_NO_OWNERDOC,
+     "Il nodo secondario non ha alcun documento di propriet\u00e0."},
+
+
+ /** ER_ELEMTEMPLATEELEM_ERR          */
+ //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+
+ {
+   ER_ELEMTEMPLATEELEM_ERR, "Errore ElemTemplateElement: {0}."},
+
+
+ /** ER_NULL_CHILD          */
+ //public static final int ER_NULL_CHILD = 20;
+
+
+ {
+   ER_NULL_CHILD, "Tentativo di aggiungere un elemento secondario nullo."},
+
+
+ /** ER_NEED_SELECT_ATTRIB          */
+ //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+
+ {
+   ER_NEED_SELECT_ATTRIB, "{0} richiede un attributo selezione."},
+
+
+ /** ER_NEED_TEST_ATTRIB          */
+ //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+
+ {
+   ER_NEED_TEST_ATTRIB,
+     "xsl:when deve avere un attributo 'test'."},
+
+
+ /** ER_NEED_NAME_ATTRIB          */
+ //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+
+ {
+   ER_NEED_NAME_ATTRIB,
+     "xsl:with-param deve avere un attributo 'name'."},
+
+
+ /** ER_NO_CONTEXT_OWNERDOC          */
+ //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+
+ {
+   ER_NO_CONTEXT_OWNERDOC,
+     "Il contesto non ha un documento di propriet\u00e0."},
+
+
+ /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+ //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+
+ {
+   ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+     "Impossibile creare un XML TransformerFactory Liaison: {0}"},
+
+
+ /** ER_PROCESS_NOT_SUCCESSFUL          */
+ //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+
+ {
+   ER_PROCESS_NOT_SUCCESSFUL,
+     "Xalan: il processo non \u00e8 riuscito."},
+
+
+ /** ER_NOT_SUCCESSFUL          */
+ //public static final int ER_NOT_SUCCESSFUL = 27;
+
+
+ {
+   ER_NOT_SUCCESSFUL, "Xalan: non \u00e8 riuscito."},
+
+
+ /** ER_ENCODING_NOT_SUPPORTED          */
+ //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+
+ {
+   ER_ENCODING_NOT_SUPPORTED, "Codifica non supportata: {0}"},
+
+
+ /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+ //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+
+ {
+   ER_COULD_NOT_CREATE_TRACELISTENER,
+     "Impossibile creare TraceListener: {0}"},
+
+
+ /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+ //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+
+ {
+   ER_KEY_REQUIRES_NAME_ATTRIB,
+     "xsl:key richiede un attributo 'nome'."},
+
+
+ /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+ //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+ {
+   ER_KEY_REQUIRES_MATCH_ATTRIB,
+     "xsl:key richiede un attributo 'corrispondenza'."},
+
+
+ /** ER_KEY_REQUIRES_USE_ATTRIB          */
+ //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+
+ {
+   ER_KEY_REQUIRES_USE_ATTRIB,
+     "xsl:key richiede un attributo 'uso'."},
+
+
+ /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+ //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+
+ {
+   ER_REQUIRES_ELEMENTS_ATTRIB,
+     "(StylesheetHandler) {0} richiede un attributo ''elementi''."},
+
+
+ /** ER_MISSING_PREFIX_ATTRIB          */
+ //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+
+ {
+   ER_MISSING_PREFIX_ATTRIB,
+     "(StylesheetHandler) {0} attributo ''prefisso'' mancante"},
+
+
+ /** ER_BAD_STYLESHEET_URL          */
+ //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+
+ {
+   ER_BAD_STYLESHEET_URL, "URL del foglio di stile non valido: {0}"},
+
+
+ /** ER_FILE_NOT_FOUND          */
+ //public static final int ER_FILE_NOT_FOUND = 36;
+
+
+ {
+   ER_FILE_NOT_FOUND, "File del foglio di stile non trovato: {0}"},
+
+
+ /** ER_IOEXCEPTION          */
+ //public static final int ER_IOEXCEPTION = 37;
+
+
+ {
+   ER_IOEXCEPTION,
+     "Rilevata eccezione IO con il file del foglio di stile: {0}"},
+
+
+ /** ER_NO_HREF_ATTRIB          */
+ //public static final int ER_NO_HREF_ATTRIB = 38;
+
+
+ {
+   ER_NO_HREF_ATTRIB,
+     "(StylesheetHandler) Impossibile trovare l'attributo href per {0}"},
+
+
+ /** ER_STYLESHEET_INCLUDES_ITSELF          */
+ //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+
+ {
+   ER_STYLESHEET_INCLUDES_ITSELF,
+     "(StylesheetHandler) {0} include se stesso direttamente o indirettamente."},
+
+
+ /** ER_PROCESSINCLUDE_ERROR          */
+ //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+
+ {
+   ER_PROCESSINCLUDE_ERROR,
+     "Errore StylesheetHandler.processInclude, {0}"},
+
+
+ /** ER_MISSING_LANG_ATTRIB          */
+ //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+
+ {
+   ER_MISSING_LANG_ATTRIB,
+     "(StylesheetHandler) {0} attributo ''lang'' mancante"},
+
+
+ /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+ //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+
+ {
+   ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+     "(StylesheetHandler) elemento {0} fuori posto? ''Componente'' dell'elemento contenitore mancante"},
+
+
+ /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+ //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+
+ {
+   ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+     "\u00c8 possibile eseguire l'output solo in Element, DocumentFragment, Document o PrintWriter."},
+
+
+ /** ER_PROCESS_ERROR          */
+ //public static final int ER_PROCESS_ERROR = 44;
+
+
+ {
+   ER_PROCESS_ERROR, "Errore in StylesheetRoot.process"},
+
+
+ /** ER_UNIMPLNODE_ERROR          */
+ //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+
+ {
+   ER_UNIMPLNODE_ERROR, "Errore in UnImplNode: {0}"},
+
+
+ /** ER_NO_SELECT_EXPRESSION          */
+ //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+
+ {
+   ER_NO_SELECT_EXPRESSION,
+     "Errore. L'espressione di selezione del percorso (-select) non \u00e8 stata trovata."},
+
+
+ /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+ //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+
+ {
+   ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+     "Impossibile serializzare un XSLProcessor!"},
+
+
+ /** ER_NO_INPUT_STYLESHEET          */
+ //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+
+ {
+   ER_NO_INPUT_STYLESHEET,
+     "Input del foglio di stile non specificato."},
+
+
+ /** ER_FAILED_PROCESS_STYLESHEET          */
+ //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+
+ {
+   ER_FAILED_PROCESS_STYLESHEET,
+     "Elaborazione del foglio di stile non riuscita."},
+
+
+ /** ER_COULDNT_PARSE_DOC          */
+ //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+
+ {
+   ER_COULDNT_PARSE_DOC, "Impossibile analizzare il documento {0}."},
+
+
+ /** ER_COULDNT_FIND_FRAGMENT          */
+ //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+
+ {
+   ER_COULDNT_FIND_FRAGMENT, "Impossibile trovare il frammento: {0}"},
+
+
+ /** ER_NODE_NOT_ELEMENT          */
+ //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+
+ {
+   ER_NODE_NOT_ELEMENT,
+     "Il nodo a cui puntava l'identificatore del frammento non era un elemento: {0}"},
+
+
+ /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+ //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+
+ {
+   ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+     "for-each deve avere un attributo corrispondenza o nome."},
+
+
+ /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+ //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+
+ {
+   ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+     "I modelli devono avere un attributo corrispondenza o nome."},
+
+
+ /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+ //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+
+ {
+   ER_NO_CLONE_OF_DOCUMENT_FRAG,
+     "Nessun duplicato di frammento di un documento."},
+
+
+ /** ER_CANT_CREATE_ITEM          */
+ //public static final int ER_CANT_CREATE_ITEM = 56;
+
+
+ {
+   ER_CANT_CREATE_ITEM,
+     "Impossibile creare un elemento nell'albero del risultato: {0}"},
+
+
+ /** ER_XMLSPACE_ILLEGAL_VALUE          */
+ //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+
+ {
+   ER_XMLSPACE_ILLEGAL_VALUE,
+     "xml:space nell'XML sorgente ha valore non valido: {0}"},
+
+
+ /** ER_NO_XSLKEY_DECLARATION          */
+ //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+
+ {
+   ER_NO_XSLKEY_DECLARATION,
+     "Dichiarazione xsl:key mancante per {0}!"},
+
+
+ /** ER_CANT_CREATE_URL          */
+ //public static final int ER_CANT_CREATE_URL = 59;
+
+
+ {
+   ER_CANT_CREATE_URL, "Errore. Impossibile creare URL per: {0}"},
+
+
+ /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+ //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+
+ {
+   ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions non supportato"},
+
+
+ /** ER_PROCESSOR_ERROR          */
+ //public static final int ER_PROCESSOR_ERROR = 61;
+
+
+ {
+   ER_PROCESSOR_ERROR, "Errore XSLT TransformerFactory"},
+
+
+ /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+ //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+
+ {
+   ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+     "(StylesheetHandler) {0} non consentito in un foglio di stile."},
+
+
+ /** ER_RESULTNS_NOT_SUPPORTED          */
+ //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+
+ {
+   ER_RESULTNS_NOT_SUPPORTED,
+     "result-ns non \u00e8 pi\u00f9 supportato. Utilizzare xsl:output."},
+
+
+ /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+ //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+
+ {
+   ER_DEFAULTSPACE_NOT_SUPPORTED,
+     "default-space non \u00e8 pi\u00f9 supportato. Utilizzare xsl:strip-space o xsl:preserve-space."},
+
+
+ /** ER_INDENTRESULT_NOT_SUPPORTED          */
+ //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+
+ {
+   ER_INDENTRESULT_NOT_SUPPORTED,
+     "indent-result non \u00e8 pi\u00f9 supportato. Utilizzare xsl:output."},
+
+
+ /** ER_ILLEGAL_ATTRIB          */
+ //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+
+ {
+   ER_ILLEGAL_ATTRIB,
+     "(StylesheetHandler) {0} ha un attributo non valido {1}"},
+
+
+ /** ER_UNKNOWN_XSL_ELEM          */
+ //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+
+ {
+   ER_UNKNOWN_XSL_ELEM, "Elemento XSL sconosciuto: {0}"},
+
+
+ /** ER_BAD_XSLSORT_USE          */
+ //public static final int ER_BAD_XSLSORT_USE = 68;
+
+
+ {
+   ER_BAD_XSLSORT_USE,
+     "(StylesheetHandler) xsl:sort pu\u00f2 essere utilizzato solo con xsl:apply-templates o xsl:for-each."},
+
+
+ /** ER_MISPLACED_XSLWHEN          */
+ //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+
+ {
+   ER_MISPLACED_XSLWHEN,
+     "(StylesheetHandler) xsl:when fuori posto."},
+
+
+ /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+ //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+
+ {
+   ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+     "(StylesheetHandler) xsl:when non dipende da xsl:choose!"},
+
+
+ /** ER_MISPLACED_XSLOTHERWISE          */
+ //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+
+ {
+   ER_MISPLACED_XSLOTHERWISE,
+     "(StylesheetHandler) xsl:otherwise fuori posto."},
+
+
+ /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+ //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+
+ {
+   ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+     "(StylesheetHandler) xsl:otherwise non dipende da xsl:choose."},
+
+
+ /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+ //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+
+ {
+   ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+     "(StylesheetHandler) {0} non \u00e8 consentito in un modello."},
+
+
+ /** ER_UNKNOWN_EXT_NS_PREFIX          */
+ //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+
+ {
+   ER_UNKNOWN_EXT_NS_PREFIX,
+     "(StylesheetHandler) {0} prefisso namespace di estensione {1} sconosciuto"},
+
+
+ /** ER_IMPORTS_AS_FIRST_ELEM          */
+ //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+
+ {
+   ER_IMPORTS_AS_FIRST_ELEM,
+     "(StylesheetHandler) Le importazioni sono possibili solo come primi elementi di un foglio di stile."},
+
+
+ /** ER_IMPORTING_ITSELF          */
+ //public static final int ER_IMPORTING_ITSELF = 76;
+
+
+ {
+   ER_IMPORTING_ITSELF,
+     "(StylesheetHandler) {0} sta importando se stesso direttamente o indirettamente."},
+
+
+ /** ER_XMLSPACE_ILLEGAL_VAL          */
+ //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+
+ {
+   ER_XMLSPACE_ILLEGAL_VAL,
+     "(StylesheetHandler) " + "xml:space ha valore non valido: {0}"},
+
+
+ /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+ //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+
+ {
+   ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+     "processStylesheet non \u00e8 riuscito."},
+
+
+ /** ER_SAX_EXCEPTION          */
+ //public static final int ER_SAX_EXCEPTION = 79;
+
+
+ {
+   ER_SAX_EXCEPTION, "Eccezione SAX"},
+
+
+ /** ER_FUNCTION_NOT_SUPPORTED          */
+ //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+
+ {
+   ER_FUNCTION_NOT_SUPPORTED, "Funzione non supportata"},
+
+
+ /** ER_XSLT_ERROR          */
+ //public static final int ER_XSLT_ERROR = 81;
+
+
+ {
+   ER_XSLT_ERROR, "Errore XSLT"},
+
+
+ /** ER_CURRENCY_SIGN_ILLEGAL          */
+ //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+
+ {
+   ER_CURRENCY_SIGN_ILLEGAL,
+     "Il segno di valuta non \u00e8 consentito nelle stringhe modello di formato."},
+
+
+ /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+ //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+
+ {
+   ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+     "Funzione documento non supportata nel foglio di stile DOM!"},
+
+
+ /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+ //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+
+ {
+   ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+     "Impossibile risolvere il prefisso del risolutore non-Prefix."},
+
+
+ /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+ //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+
+ {
+   ER_REDIRECT_COULDNT_GET_FILENAME,
+     "Estensione di reindirizzamento: Impossibile trovare il nome file. Il file o l'attributo di selezione devono generare una stringa valida."},
+
+
+ /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+ //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+
+ {
+   ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+     "Impossibile generare FormatterListener nell'estensione di reindirizzamento."},
+
+
+ /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+ //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+
+ {
+   ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+     "Il prefisso in exclude-result-prefixes non \u00e8 valido: {0}"},
+
+
+ /** ER_MISSING_NS_URI          */
+ //public static final int ER_MISSING_NS_URI = 88;
+
+
+ {
+   ER_MISSING_NS_URI,
+     "URI namespace mancante per il prefisso specificato."},
+
+
+ /** ER_MISSING_ARG_FOR_OPTION          */
+ //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+
+ {
+   ER_MISSING_ARG_FOR_OPTION,
+     "Argomento mancante per l'opzione: {0}"},
+
+
+ /** ER_INVALID_OPTION          */
+ //public static final int ER_INVALID_OPTION = 90;
+
+
+ {
+   ER_INVALID_OPTION, "Opzione non valida: {0}"},
+
+
+ /** ER_MALFORMED_FORMAT_STRING          */
+ //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+
+ {
+   ER_MALFORMED_FORMAT_STRING, "Stringa di formato non valida: {0}"},
+
+
+ /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+ //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+
+ {
+   ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+     "xsl:stylesheet richiede un attributo 'versione'."},
+
+
+ /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+ //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+
+ {
+   ER_ILLEGAL_ATTRIBUTE_VALUE,
+     "Attributo: {0} ha un valore non valido: {1}"},
+
+
+ /** ER_CHOOSE_REQUIRES_WHEN          */
+ //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+
+ {
+   ER_CHOOSE_REQUIRES_WHEN, "xsl:choose richiede xsl:when"},
+
+
+ /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+ //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+
+ {
+   ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+     "xsl:apply-imports non consentito in xsl:for-each"},
+
+
+ /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+ //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+
+ {
+   ER_CANT_USE_DTM_FOR_OUTPUT,
+     "Impossibile utilizzare un collegamento DTM per un nodo DOM di output. Utilizzare org.apache.xpath.DOM2Helper."},
+
+
+ /** ER_CANT_USE_DTM_FOR_INPUT          */
+ //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+ {
+   ER_CANT_USE_DTM_FOR_INPUT,
+     "Impossibile utilizzare un collegamento DTM per un nodo DOM di input. Utilizzare org.apache.xpath.DOM2Helper."},
+
+
+ /** ER_CALL_TO_EXT_FAILED          */
+ //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+
+ {
+   ER_CALL_TO_EXT_FAILED,
+     "Chiamata all'elemento di estensione non riuscita: {0}"},
+
+
+ /** ER_PREFIX_MUST_RESOLVE          */
+ //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+
+ {
+   ER_PREFIX_MUST_RESOLVE,
+     "Il prefisso deve risolvere in namespace: {0}"},
+
+
+ /** ER_INVALID_UTF16_SURROGATE          */
+ //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+
+ {
+   ER_INVALID_UTF16_SURROGATE,
+     "Rilevato surrogato di UTF-16 non valido: {0} ?"},
+
+
+ /** ER_XSLATTRSET_USED_ITSELF          */
+ //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+
+ {
+   ER_XSLATTRSET_USED_ITSELF,
+     "xsl:attribute-set {0} ha utilizzato se stesso, generando un loop infinito."},
+
+
+ /** ER_CANNOT_MIX_XERCESDOM          */
+ //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+
+ {
+   ER_CANNOT_MIX_XERCESDOM,
+     "Impossibile combinare un input non Xerces-DOM con un input Xerces-DOM."},
+
+
+ /** ER_TOO_MANY_LISTENERS          */
+ //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+
+ {
+   ER_TOO_MANY_LISTENERS,
+     "addTraceListenersToStylesheet - TooManyListenersException"},
+
+
+ /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+ //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+
+ {
+   ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+     "In ElemTemplateElement.readObject: {0}"},
+
+
+ /** ER_DUPLICATE_NAMED_TEMPLATE          */
+ //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+
+ {
+   ER_DUPLICATE_NAMED_TEMPLATE,
+     "Trovato pi\u00f9 di un modello denominato: {0}"},
+
+
+ /** ER_INVALID_KEY_CALL          */
+ //public static final int ER_INVALID_KEY_CALL = 106;
+
+
+ {
+   ER_INVALID_KEY_CALL,
+     "Chiamata di funzione non valida: le chiamate chiave() ricorsive non sono consentite."},
+
+ 
+ /** Variable is referencing itself          */
+ //public static final int ER_REFERENCING_ITSELF = 107;
+
+
+ {
+   ER_REFERENCING_ITSELF,
+     "La variabile {0} fa riferimento a se stessa direttamente o indirettamente."},
+
+ 
+ /** Illegal DOMSource input          */
+ //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+
+ {
+   ER_ILLEGAL_DOMSOURCE_INPUT,
+     "Il nodo di input non pu\u00f2 essere nullo per DOMSource per newTemplates."},
+
+	
+	/** Class not found for option         */
+ //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+
+ {
+   ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"File di classe non trovato per l'opzione {0}"},
+
+	
+	/** Required Element not found         */
+ //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+
+ {
+   ER_REQUIRED_ELEM_NOT_FOUND,
+			"Elemento richiesto non trovato: {0}"},
+
+ 
+ /** InputStream cannot be null         */
+ //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+
+ {
+   ER_INPUT_CANNOT_BE_NULL,
+			"InputStream non pu\u00f2 essere nullo."},
+
+ 
+ /** URI cannot be null         */
+ //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+
+ {
+   ER_URI_CANNOT_BE_NULL,
+			"L'URI non pu\u00f2 essere nullo."},
+
+ 
+ /** File cannot be null         */
+ //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+
+ {
+   ER_FILE_CANNOT_BE_NULL,
+			"Il file non pu\u00f2 essere nullo."},
+
+ 
+  /** InputSource cannot be null         */
+ //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+
+ {
+   ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource non pu\u00f2 essere nullo."},
+
+ 
+ /** Can't overwrite cause         */
+ //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+
+ {
+   ER_CANNOT_OVERWRITE_CAUSE,
+			"Impossibile sovrascrivere la causa."},
+
+ 
+ /** Could not initialize BSF Manager        */
+ //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+
+ {
+   ER_CANNOT_INIT_BSFMGR,
+			"Impossibile inizializzare BSF Manager."},
+
+ 
+ /** Could not compile extension       */
+ //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+
+ {
+   ER_CANNOT_CMPL_EXTENSN,
+			"Impossibile compilare l'estensione."},
+
+ 
+ /** Could not create extension       */
+ //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+
+ {
+   ER_CANNOT_CREATE_EXTENSN,
+     "Impossibile creare l'estensione: {0} a causa di: {1}"},
+
+ 
+ /** Instance method call to method {0} requires an Object instance as first argument       */
+ //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+
+ {
+   ER_INSTANCE_MTHD_CALL_REQUIRES,
+     "La chiamata del metodo istanza al metodo {0} richiede un'istanza oggetto come primo argomento."},
+
+ 
+ /** Invalid element name specified       */
+ //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+
+ {
+   ER_INVALID_ELEMENT_NAME,
+     "\u00c8 stato specificato un nome elemento non valido {0}"},
+
+ 
+  /** Element name method must be static      */
+ //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+
+ {
+   ER_ELEMENT_NAME_METHOD_STATIC,
+     "Il metodo del nome elemento deve essere statico {0}"},
+
+ 
+  /** Extension function {0} : {1} is unknown      */
+ //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+
+ {
+   ER_EXTENSION_FUNC_UNKNOWN,
+            "Funzione estensione {0} : {1} sconosciuta."},
+
+ 
+  /** More than one best match for constructor for       */
+ //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+
+ {
+   ER_MORE_MATCH_CONSTRUCTOR,
+            "Pi\u00f9 di una corrispondenza migliore per costruttore per {0}."},
+
+ 
+  /** More than one best match for method      */
+ //public static final int ER_MORE_MATCH_METHOD = 124;
+
+
+ {
+   ER_MORE_MATCH_METHOD,
+            "Pi\u00f9 di una corrispondenza migliore per il metodo {0}"},
+
+ 
+  /** More than one best match for element method      */
+ //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+
+ {
+   ER_MORE_MATCH_ELEMENT,
+            "Pi\u00f9 di una corrispondenza migliore per il metodo elemento {0}"},
+
+ 
+  /** Invalid context passed to evaluate       */
+ //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+
+ {
+   ER_INVALID_CONTEXT_PASSED,
+            "Contesto non valido passato da valutare {0}."},
+
+ 
+  /** Pool already exists       */
+ //public static final int ER_POOL_EXISTS = 127;
+
+
+ {
+   ER_POOL_EXISTS,
+            "Pool gi\u00e0 esistente."},
+
+ 
+  /** No driver Name specified      */
+ //public static final int ER_NO_DRIVER_NAME = 128;
+
+
+ {
+   ER_NO_DRIVER_NAME,
+            "Non \u00e8 stato specificato alcun nome di driver."},
+
+ 
+  /** No URL specified     */
+ //public static final int ER_NO_URL = 129;
+
+
+ {
+   ER_NO_URL,
+            "Non \u00e8 stato specificato alcun URL."},
+
+ 
+  /** Pool size is less than one    */
+ //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+
+ {
+   ER_POOL_SIZE_LESSTHAN_ONE,
+            "Le dimensioni del pool sono minori di uno."},
+
+ 
+  /** Invalid driver name specified    */
+ //public static final int ER_INVALID_DRIVER = 131;
+
+
+ {
+   ER_INVALID_DRIVER,
+            "\u00c8 stato specificato un nome di driver non valido."},
+
+ 
+  /** Did not find the stylesheet root    */
+ //public static final int ER_NO_STYLESHEETROOT = 132;
+
+
+ {
+   ER_NO_STYLESHEETROOT,
+            "Impossibile trovare la root del foglio di stile."},
+
+ 
+  /** Illegal value for xml:space     */
+ //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+
+ {
+   ER_ILLEGAL_XMLSPACE_VALUE,
+        "Valore non valido per xml:space."},
+
+ 
+  /** processFromNode failed     */
+ //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+
+ {
+   ER_PROCESSFROMNODE_FAILED,
+        "processFromNode non riuscito."},
+
+ 
+  /** The resource [] could not load:     */
+ //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+
+ {
+   ER_RESOURCE_COULD_NOT_LOAD,
+       "Impossibile caricare la risorsa [ {0} ]: {1} \n {2} \t {3}"},
+
+  
+ 
+  /** Buffer size <=0     */
+ //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+
+ {
+   ER_BUFFER_SIZE_LESSTHAN_ZERO,
+       "Dimensioni del buffer <=0"},
+
+ 
+  /** Unknown error when calling extension    */
+ //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+
+ {
+   ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+       "Errore sconosciuto nella chiamata dell'estensione."},
+
+ 
+  /** Prefix {0} does not have a corresponding namespace declaration    */
+ //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+
+ {
+   ER_NO_NAMESPACE_DECL,
+       "Il prefisso {0} non ha una corrispondente dichiarazione namespace."},
+
+ 
+  /** Element content not allowed for lang=javaclass   */
+ //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+
+ {
+   ER_ELEM_CONTENT_NOT_ALLOWED,
+       "Contenuto dell'elemento non consentito per lang=javaclass {0}."},
+   
+ 
+  /** Stylesheet directed termination   */
+ //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+
+ {
+   ER_STYLESHEET_DIRECTED_TERMINATION,
+       "Conclusione richiesta dal foglio di stile."},
+
+ 
+  /** 1 or 2   */
+ //public static final int ER_ONE_OR_TWO = 141;
+
+
+ {
+   ER_ONE_OR_TWO,
+       "1 o 2"},
+
+ 
+  /** 2 or 3   */
+ //public static final int ER_TWO_OR_THREE = 142;
+
+
+ {
+   ER_TWO_OR_THREE,
+       "2 o 3"},
+
+ 
+  /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+ //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+
+ {
+   ER_COULD_NOT_LOAD_RESOURCE,
+       "Impossibile caricare {0} (verificare CLASSPATH). Attualmente sono in uso i valori predefiniti."},
+
+ 
+  /** Cannot initialize default templates   */
+ //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+
+ {
+   ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+       "Impossibile inizializzare i modelli predefiniti."},
+
+ 
+  /** Result should not be null   */
+ //public static final int ER_RESULT_NULL = 145;
+
+
+ {
+   ER_RESULT_NULL,
+       "Il risultato non dovrebbe essere nullo."},
+
+   
+  /** Result could not be set   */
+ //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+
+ {
+   ER_RESULT_COULD_NOT_BE_SET,
+       "Impossibile stabilire il risultato."},
+
+ 
+  /** No output specified   */
+ //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+ {
+   ER_NO_OUTPUT_SPECIFIED,
+       "Nessun output specificato."},
+
+ 
+  /** Can't transform to a Result of type   */
+ //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+
+ {
+   ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+       "Impossibile trasformare in un risultato di tipo {0}."},
+
+ 
+  /** Can't transform to a Source of type   */
+ //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+
+ {
+   ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+       "Impossibile trasformare un sorgente di tipo {0}."},
+
+ 
+  /** Null content handler  */
+ //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+
+ {
+   ER_NULL_CONTENT_HANDLER,
+       "Contenuto gestore nullo"},
+
+ 
+  /** Null error handler  */
+ //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+
+ {
+   ER_NULL_ERROR_HANDLER,
+       "Errore gestore nullo"},
+
+ 
+  /** parse can not be called if the ContentHandler has not been set */
+ //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+
+ {
+   ER_CANNOT_CALL_PARSE,
+       "Impossibile chiamare l'analisi se non \u00e8 impostato ContentHandler."},
+
+ 
+  /**  No parent for filter */
+ //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+
+ {
+   ER_NO_PARENT_FOR_FILTER,
+       "Nessun elemento principale per il filtro."},
+
+ 
+ 
+  /**  No stylesheet found in: {0}, media */
+ //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+
+ {
+   ER_NO_STYLESHEET_IN_MEDIA,
+        "Nessun foglio di stile trovato in: {0}, media= {1}"},
+
+ 
+  /**  No xml-stylesheet PI found in */
+ //public static final int ER_NO_STYLESHEET_PI = 155;
+
+
+ {
+   ER_NO_STYLESHEET_PI,
+        "Nessun xml-stylesheet PI trovato in : {0}"},
+
+ 
+  /**  No default implementation found */
+ //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+
+ {
+   ER_NO_DEFAULT_IMPL,
+        "Non \u00e8 stata trovata alcuna implementazione predefinita "},
+
+ 
+  /**  ChunkedIntArray({0}) not currently supported */
+ //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+
+ {
+   ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+      "ChunkedIntArray({0}) non \u00e8 correntemente supportato."},
+
+ 
+  /**  Offset bigger than slot */
+ //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+
+ {
+   ER_OFFSET_BIGGER_THAN_SLOT,
+      "L'offset \u00e8 maggiore dello slot."},
+
+ 
+  /**  Coroutine not available, id= */
+ //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+
+ {
+   ER_COROUTINE_NOT_AVAIL,
+      "Coroutine non disponibile, id={0}"},
+
+ 
+  /**  CoroutineManager recieved co_exit() request */
+ //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+
+ {
+   ER_COROUTINE_CO_EXIT,
+      "CoroutineManager ha ricevuto una richiesta co_exit()."},
+
+ 
+  /**  co_joinCoroutineSet() failed */
+ //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+
+ {
+   ER_COJOINROUTINESET_FAILED,
+      "co_joinCoroutineSet() non riuscito."},
+
+ 
+  /**  Coroutine parameter error () */
+ //public static final int ER_COROUTINE_PARAM = 162;
+
+
+ {
+   ER_COROUTINE_PARAM,
+      "Errore del parametro di coroutine ({0})."},
+
+ 
+  /**  UNEXPECTED: Parser doTerminate answers  */
+ //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+
+ {
+   ER_PARSER_DOTERMINATE_ANSWERS,
+      "\nUNEXPECTED: Risposte doTerminate del parser {0}"},
+
+ 
+  /**  parse may not be called while parsing */
+ //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+
+ {
+   ER_NO_PARSE_CALL_WHILE_PARSING,
+      "Impossibile chiamare l'analisi mentre \u00e8 in esecuzione."},
+
+ 
+  /**  Error: typed iterator for axis  {0} not implemented  */
+ //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+
+ {
+   ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+      "Errore: tipo di iteratore per l'asse {0} non implementato."},
+
+ 
+  /**  Error: iterator for axis {0} not implemented  */
+ //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+
+ {
+   ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+      "Errore: l'iteratore per l'asse {0} non \u00e8 implementato. "},
+
+ 
+  /**  Iterator clone not supported  */
+ //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+
+ {
+   ER_ITERATOR_CLONE_NOT_SUPPORTED,
+      "Il duplicato dell'iteratore non \u00e8 supportato."},
+
+ 
+  /**  Unknown axis traversal type  */
+ //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+
+ {
+   ER_UNKNOWN_AXIS_TYPE,
+      "Tipo di asse trasversale sconosciuto : {0}."},
+
+ 
+  /**  Axis traverser not supported  */
+ //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+
+ {
+   ER_AXIS_NOT_SUPPORTED,
+      "Attraversatore dell'asse non supportato: {0}"},
+
+ 
+  /**  No more DTM IDs are available  */
+ //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+
+ {
+   ER_NO_DTMIDS_AVAIL,
+      "Non sono pi\u00f9 disponibili ID DTM."},
+
+ 
+  /**  Not supported  */
+ //public static final int ER_NOT_SUPPORTED = 171;
+
+
+ {
+   ER_NOT_SUPPORTED,
+      "Non supportato: {0}"},
+
+ 
+  /**  node must be non-null for getDTMHandleFromNode  */
+ //public static final int ER_NODE_NON_NULL = 172;
+
+
+ {
+   ER_NODE_NON_NULL,
+      "Il nodo deve essere non nullo per getDTMHandleFromNode."},
+
+ 
+  /**  Could not resolve the node to a handle  */
+ //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+
+ {
+   ER_COULD_NOT_RESOLVE_NODE,
+      "Impossibile risolvere il nodo a un handle"},
+
+ 
+  /**  startParse may not be called while parsing */
+ //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+
+ {
+   ER_STARTPARSE_WHILE_PARSING,
+      "Impossibile chiamare startParse durante l'analisi."},
+
+ 
+  /**  startParse needs a non-null SAXParser  */
+ //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+
+ {
+   ER_STARTPARSE_NEEDS_SAXPARSER,
+      "startParse richiede un SAXParser non nullo."},
+
+ 
+  /**  could not initialize parser with */
+ //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+
+ {
+   ER_COULD_NOT_INIT_PARSER,
+      "Impossibile inizializzare il parser con"},
+
+ 
+  /**  Value for property {0} should be a Boolean instance  */
+ //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+
+ {
+   ER_PROPERTY_VALUE_BOOLEAN,
+      "Il valore della propriet\u00e0 {0} deve essere un'istanza booleana"},
+
+ 
+  /**  exception creating new instance for pool  */
+ //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+
+ {
+   ER_EXCEPTION_CREATING_POOL,
+      "l'eccezione crea una nuova istanza del pool"},
+
+ 
+  /**  Path contains invalid escape sequence  */
+ //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+
+ {
+   ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+      "Il percorso contiene una sequenza di escape non valida."},
+
+ 
+  /**  Scheme is required!  */
+ //public static final int ER_SCHEME_REQUIRED = 180;
+
+
+ {
+   ER_SCHEME_REQUIRED,
+      "Lo schema \u00e8 necessario."},
+
+ 
+  /**  No scheme found in URI  */
+ //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+
+ {
+   ER_NO_SCHEME_IN_URI,
+      "Nessuno schema trovato nell'URI: {0}"},
+
+ 
+  /**  No scheme found in URI  */
+ //public static final int ER_NO_SCHEME_INURI = 182;
+
+
+ {
+   ER_NO_SCHEME_INURI,
+      "Nessuno schema trovato nell'URI"},
+
+ 
+  /**  Path contains invalid character:   */
+ //public static final int ER_PATH_INVALID_CHAR = 183;
+
+
+ {
+   ER_PATH_INVALID_CHAR,
+      "Il percorso contiene un carattere non valido: {0}"},
+
+ 
+  /**  Cannot set scheme from null string  */
+ //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+
+ {
+   ER_SCHEME_FROM_NULL_STRING,
+      "Impossibile impostare lo schema da una stringa nulla."},
+
+ 
+  /**  The scheme is not conformant. */
+ //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+
+ {
+   ER_SCHEME_NOT_CONFORMANT,
+      "Lo schema non \u00e8 conforme."},
+
+ 
+  /**  Host is not a well formed address  */
+ //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+
+ {
+   ER_HOST_ADDRESS_NOT_WELLFORMED,
+      "L'host non \u00e8 un indirizzo corretto."},
+
+ 
+  /**  Port cannot be set when host is null  */
+ //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+
+ {
+   ER_PORT_WHEN_HOST_NULL,
+      "Impossibile impostare la porta quando l'host \u00e8 nullo."},
+
+ 
+  /**  Invalid port number  */
+ //public static final int ER_INVALID_PORT = 188;
+
+
+ {
+   ER_INVALID_PORT,
+      "Numero di porta non valido"},
+
+ 
+  /**  Fragment can only be set for a generic URI  */
+ //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+
+ {
+   ER_FRAG_FOR_GENERIC_URI,
+      "\u00c8 possibile impostare il frammento solo per un URI generico."},
+
+ 
+  /**  Fragment cannot be set when path is null  */
+ //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+
+ {
+   ER_FRAG_WHEN_PATH_NULL,
+      "Impossibile impostare il frammento quando il percorso \u00e8 nullo."},
+
+ 
+  /**  Fragment contains invalid character  */
+ //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+
+ {
+   ER_FRAG_INVALID_CHAR,
+      "Il frammento contiene un carattere non valido."},
+
+ 
+
+ 
+  /** Parser is already in use  */
+ //public static final int ER_PARSER_IN_USE = 192;
+
+
+ {
+   ER_PARSER_IN_USE,
+       "Il parser \u00e8 gi\u00e0 in uso."},
+
+ 
+  /** Parser is already in use  */
+ //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+
+ {
+   ER_CANNOT_CHANGE_WHILE_PARSING,
+       "Impossibile cambiare {0} {1} durante l'analisi."},
+
+ 
+  /** Self-causation not permitted  */
+ //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+
+ {
+   ER_SELF_CAUSATION_NOT_PERMITTED,
+       "Non \u00e8 consentito essere causa ed effetto contemporaneamente."},
+
+ 
+  /** src attribute not yet supported for  */
+ //public static final int ER_COULD_NOT_FIND_EXTERN_SCRIPT = 195;
+
+
+ {
+   ER_COULD_NOT_FIND_EXTERN_SCRIPT,
+      "L'attributo src non \u00e8 ancora supportato per {0}."},
+
+ 
+ /** The resource [] could not be found     */
+ //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+
+ {
+   ER_RESOURCE_COULD_NOT_FIND,
+       "Impossibile trovare la risorsa [ {0} ].\n {1}"},
+
+ 
+  /** output property not recognized:  */
+ //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+
+ {
+   ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+       "La propriet\u00e0 dell'output non \u00e8 riconosciuta: {0}"},
+
+ 
+  /** Userinfo may not be specified if host is not specified   */
+ //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+
+ {
+   ER_NO_USERINFO_IF_NO_HOST,
+       "Impossibile specificare Userinfo se non \u00e8 specificato l'host."},
+
+ 
+  /** Port may not be specified if host is not specified   */
+ //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+
+ {
+   ER_NO_PORT_IF_NO_HOST,
+       "Impossibile specificare la porta se non \u00e8 specificato l'host."},
+
+ 
+  /** Query string cannot be specified in path and query string   */
+ //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+
+ {
+   ER_NO_QUERY_STRING_IN_PATH,
+       "La stringa di query non pu\u00f2 essere specificata nella stringa di percorso e di query."},
+
+ 
+  /** Fragment cannot be specified in both the path and fragment   */
+ //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+
+ {
+   ER_NO_FRAGMENT_STRING_IN_PATH,
+       "Il frammento non pu\u00f2 essere specificato sia nel percorso sia nel frammento."},
+
+ 
+  /** Cannot initialize URI with empty parameters   */
+ //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+
+ {
+   ER_CANNOT_INIT_URI_EMPTY_PARMS,
+       "Impossibile inizializzare l'URI con parametri vuoti."},
+
+ 
+  /** Failed creating ElemLiteralResult instance   */
+ //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+
+ {
+   ER_FAILED_CREATING_ELEMLITRSLT,
+       "Creazione non riuscita dell'istanza ElemLiteralResult."},
+  
+ 
+	 // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+    // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+    //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+    //NOTE: Not only the key name but message has also been changed. - nb.
+
+  /** Priority value does not contain a parsable number   */
+ //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+
+ {
+   ER_VALUE_SHOULD_BE_NUMBER,
+       "Il valore di {0} deve contenere un numero analizzabile."},
+
+ 
+  /**  Value for {0} should equal 'yes' or 'no'   */
+ //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+
+ {
+   ER_VALUE_SHOULD_EQUAL,
+       "Il valore di {0} deve essere s\u00ec o no."},
+
+
+  /**  Failed calling {0} method   */
+ //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+
+ {
+   ER_FAILED_CALLING_METHOD,
+       "Chiamata non riuscita del metodo {0}."},
+
+ 
+  /** Failed creating ElemLiteralResult instance   */
+ //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+
+ {
+   ER_FAILED_CREATING_ELEMTMPL,
+       "Creazione non riuscita dell'istanza ElemTemplateElement."},
+
+ 
+  /**  Characters are not allowed at this point in the document   */
+ //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+
+ {
+   ER_CHARS_NOT_ALLOWED,
+       "I caratteri non sono consentiti in questo punto del documento."},
+
+ 
+ /**  attribute is not allowed on the element   */
+ //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+
+ {
+   ER_ATTR_NOT_ALLOWED,
+       "\"{0}\": questo attributo non \u00e8 consentito sull'elemento {1}."},
+
+ 
+ /**  Method not yet supported    */
+ //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+
+ {
+   ER_METHOD_NOT_SUPPORTED,
+       "Metodo non ancora supportato. "},
+
+
+ /**  Bad value    */
+ //public static final int ER_BAD_VALUE = 211;
+
+
+ {
+   ER_BAD_VALUE,
+    "{0} valore non valido {1} "},
+
+ 
+ /**  attribute value not found   */
+ //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+
+ {
+   ER_ATTRIB_VALUE_NOT_FOUND,
+    "{0} valore dell'attributo non trovato."},
+
+ 
+ /**  attribute value not recognized    */
+ //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+
+ {
+   ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+    "{0} valore dell'attributo non riconosciuto "},
+
+
+ /** IncrementalSAXSource_Filter not currently restartable   */
+ //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+
+ {
+   ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+    "IncrementalSAXSource_Filter non correntemente riavviabile."},
+
+ 
+ /** IncrementalSAXSource_Filter not currently restartable   */
+ //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+
+ {
+   ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+    "XMLReader non prima della richiesta startParse."},
+
+ 
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+
+  {
+      ER_NULL_URI_NAMESPACE,
+      "Tentativo di generare un prefisso di namespace con URI nullo"},
+  
+ 
+   // Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+ 
+   /** Attempting to generate a namespace prefix with a null URI        */
+   //public static final int ER_NUMBER_TOO_BIG = 217;
+ 
+ 
+   {
+     ER_NUMBER_TOO_BIG,
+      "Tentativo di formattare un numero maggiore dell'intero lungo pi\u00f9 grande"},
+  
+ 
+ //ER_CANNOT_FIND_SAX1_DRIVER
+ 
+   //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+ 
+ 
+   {
+     ER_CANNOT_FIND_SAX1_DRIVER,
+      "Impossibile trovare classe driver SAX1 {0}"},
+  
+ 
+ //ER_SAX1_DRIVER_NOT_LOADED
+   //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+ 
+ 
+   {
+     ER_SAX1_DRIVER_NOT_LOADED,
+      "La classe di driver SAX1 {0} \u00e8 stata trovata ma \u00e8 impossibile caricarla"},
+  
+ 
+ //ER_SAX1_DRIVER_NOT_INSTANTIATED
+   //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+ 
+ 
+   {
+     ER_SAX1_DRIVER_NOT_INSTANTIATED,
+      "La classe di driver SAX1 {0} \u00e8 stata caricata ma non \u00e8 possibile creare istanze"},
+  
+ 
+ 
+ // ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+   //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+ 
+ 
+   {
+     ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+      "La classe di driver SAX1 {0} non implementa org.xml.sax.Parser"},
+  
+ 
+ // ER_PARSER_PROPERTY_NOT_SPECIFIED
+   //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+ 
+ 
+   {
+     ER_PARSER_PROPERTY_NOT_SPECIFIED,
+      "Propriet\u00e0 di sistema org.xml.sax.parser non specificata"},
+  
+ 
+ //ER_PARSER_ARG_CANNOT_BE_NULL
+   //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+ 
+ 
+   {
+     ER_PARSER_ARG_CANNOT_BE_NULL,
+      "L'argomento del Parser non deve essere nullo"},
+  
+ 
+ 
+ // ER_FEATURE
+   //public static final int  ER_FEATURE = 224;
+ 
+ 
+   {
+     ER_FEATURE,
+      "Caratteristica:a {0}"},
+  
+ 
+ 
+ // ER_PROPERTY
+   //public static final int ER_PROPERTY = 225 ;
+ 
+ 
+   {
+     ER_PROPERTY,
+      "Propriet\u00e0:a {0}"},
+  
+ 
+ // ER_NULL_ENTITY_RESOLVER
+   //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+ 
+ 
+   {
+     ER_NULL_ENTITY_RESOLVER,
+      "Il risolutore dell'entit\u00e0 \u00e8 nullo"},
+  
+ 
+ // ER_NULL_DTD_HANDLER
+   //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+ 
+ 
+   {
+     ER_NULL_DTD_HANDLER,
+      "Il gestore DTD \u00e8 nullo"},
+  
+ 
+ // No Driver Name Specified!
+   //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+ 
+   {
+     ER_NO_DRIVER_NAME_SPECIFIED,
+      "Nessun nome di driver specificato."},
+  
+ 
+ 
+ // No URL Specified!
+   //public static final int ER_NO_URL_SPECIFIED = 229;
+ 
+   {
+     ER_NO_URL_SPECIFIED,
+      "Nessun URL specificato."},
+  
+ 
+ 
+ // Pool size is less than 1!
+   //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+ 
+   {
+     ER_POOLSIZE_LESS_THAN_ONE,
+      "La dimensione pool \u00e8 inferiore a 1."},
+  
+ 
+ 
+ // Invalid Driver Name Specified!
+   //public static final int ER_INVALID_DRIVER_NAME = 231;
+ 
+   {
+     ER_INVALID_DRIVER_NAME,
+      "Il nome specificato del driver non \u00e8 valido."},
+  
+ 
+ 
+ 
+ // ErrorListener
+   //public static final int ER_ERRORLISTENER = 232;
+ 
+   {
+     ER_ERRORLISTENER,
+      "ErrorListener"},
+  
+ 
+ 
+ // Programmer's error! expr has no ElemTemplateElement parent!
+   //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+ 
+   {
+     ER_ASSERT_NO_TEMPLATE_PARENT,
+      "Errore del programmatore. L'espressione non presenta ElemTemplateElement superiore."},
+  
+ 
+ 
+ // Programmer's assertion in RundundentExprEliminator: {0}
+   //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+ 
+   {
+     ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+      "Affermazione del programmatore in RundundentExprEliminator: {0}"},
+  
+ 
+ // Axis traverser not supported: {0}
+   //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+ 
+   {
+     ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+      "Secante asse non supportata: {0}"},
+  
+ 
+ // ListingErrorHandler created with null PrintWriter!
+   //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+ 
+   {
+     ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+      "ListingErrorHandler creato con PrintWriter nullo."},
+  
+ 
+   // {0}is not allowed in this position in the stylesheet!
+   //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+ 
+   {
+     ER_NOT_ALLOWED_IN_POSITION,
+      "{0} non \u00e8 consentito in questa posizione nel foglio di stile."},
+  
+ 
+   // Non-whitespace text is not allowed in this position in the stylesheet!
+   //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+ 
+   {
+     ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+      "Il testo senza spazi non \u00e8 consentito nel foglio di stile."},
+  
+ 
+   // This code is shared with warning codes.
+   // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+   //public static final int INVALID_TCHAR = 239;
+   // SystemId Unknown
+ 
+   {
+     INVALID_TCHAR,
+      "Valore non consentito: {1} utilizzato per attributo CHAR: {0}. L'attributo di tipo CHAR deve contenere 1 solo carattere."},
+  
+ 
+   //public static final int ER_SYSTEMID_UNKNOWN = 240;
+ 
+   {
+     ER_SYSTEMID_UNKNOWN,
+      "ID sistema sconosciuto"},
+  
+ 
+   // Location of error unknown
+   //public static final int ER_LOCATION_UNKNOWN = 241;
+ 
+   {
+     ER_LOCATION_UNKNOWN,
+      "Ubicazione errore sconosciuta"},
+  
+ 
+     // Note to translators:  The following message is used if the value of
+     // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+     // the attribute, and should not be translated.  The substitution text {1} is
+     // the attribute value and {0} is the attribute name.
+     // INVALID_QNAME
+ 
+   //The following codes are shared with the warning codes...
+   // Illegal value: {1} used for QNAME attribute: {0}
+   //public static final int INVALID_QNAME = 242;
+ 
+   {
+     INVALID_QNAME,
+      "Valore non consentito:a {1} utilizzato per attributo QNAME:a {0}"},
+  
+ 
+     // Note to translators:  The following message is used if the value of
+     // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+     // the attribute, and should not be translated.  The substitution text {1} is
+     // the attribute value, {0} is the attribute name, and {2} is a list of valid
+     // values.
+     // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+ 
+   {
+     INVALID_ENUM,
+      "Valore non consentito:a {1} utilizzato per attributo ENUM:a {0}. I valori validi sono:a {2}."},
+  
+ 
+ // Note to translators:  The following message is used if the value of
+ // an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+ // of the attribute, and should not be translated.  The substitution text {1} is
+ // the attribute value and {0} is the attribute name.
+ // INVALID_NMTOKEN
+ 
+   // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+   //public static final int INVALID_NMTOKEN = 244;
+ 
+    {
+      INVALID_NMTOKEN,
+       "Valore non consentito:a {1} utilizzato per attributo NMTOKEN:a {0} "},
+   
+  
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NCNAME
+  
+    // Illegal value:a {1} used for NCNAME attribute:a {0}.
+    //public static final int INVALID_NCNAME = 245;
+  
+    {
+      INVALID_NCNAME,
+       "Valore non consentito:a {1} utilizzato per attributo NCNAME:a {0} "},
+   
+  
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_BOOLEAN
+  
+    // Illegal value:a {1} used for boolean attribute:a {0}.
+    //public static final int INVALID_BOOLEAN = 246;
+  
+  
+    {
+      INVALID_BOOLEAN,
+       "Valore non consentito:a {1} utilizzato per attributo boolean:a {0} "},
+   
+  
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NUMBER
+  
+    // Illegal value:a {1} used for number attribute:a {0}.
+    //public static final int INVALID_NUMBER = 247;
+  
+    {
+      INVALID_NUMBER,
+       "Valore non consentito:a {1} utilizzato per attributo number:a {0} "},
+   
+  
+  
+    // End of shared codes...
+  
+  // Note to translators:  A "match pattern" is a special form of XPath expression
+  // that is used for matching patterns.  The substitution text is the name of
+  // a function.  The message indicates that when this function is referenced in
+  // a match pattern, its argument must be a string literal (or constant.)
+  // ER_ARG_LITERAL - new error message for bugzilla //5202
+  
+    // Argument to {0} in match pattern must be a literal.
+    //public static final int ER_ARG_LITERAL             = 248;
+  
+    {
+     ER_ARG_LITERAL,
+       "L'argomento di {0} nel pattern di corrispondenza deve essere letterale."},
+   
+  
+  // Note to translators:  The following message indicates that two definitions of
+  // a variable.  A "global variable" is a variable that is accessible everywher
+  // in the stylesheet.
+  // ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+  
+    // Duplicate global variable declaration.
+    //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+  
+    {
+      ER_DUPLICATE_GLOBAL_VAR,
+       "Dichiarazione variabile globale duplicata."},
+   
+  
+  
+  // Note to translators:  The following message indicates that two definitions of
+  // a variable were encountered.
+  // ER_DUPLICATE_VAR - new error message for bugzilla #790
+  
+    // Duplicate variable declaration.
+    //public static final int ER_DUPLICATE_VAR           = 250;
+  
+    {
+      ER_DUPLICATE_VAR,
+       "Dichiarazione variabile duplicata."},
+   
+ 
+      // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+      // which must not be translated.
+      // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+  
+    // xsl:template must have a name or match attribute (or both)
+    //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+  
+    {
+      ER_TEMPLATE_NAME_MATCH,
+       "xsl:template deve presentare un name o attributo match (o entrambi)"},
+   
+ 
+      // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+      // should not be translated.  The message indicates that a namespace prefix
+      // encountered as part of the value of the exclude-result-prefixes attribute
+      // was in error.
+      // ER_INVALID_PREFIX - new error message for bugzilla #788
+  
+    // Prefix in exclude-result-prefixes is not valid:a {0}
+    //public static final int ER_INVALID_PREFIX          = 252;
+  
+    {
+      ER_INVALID_PREFIX,
+       "Il prefisso in exclude-result-prefixes non \u00e8 valido:a {0}"},
+   
+  
+      // Note to translators:  An "attribute set" is a set of attributes that can be
+      // added to an element in the output document as a group.  The message indicates
+      // that there was a reference to an attribute set named {0} that was never
+      // defined.
+      // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+  
+    // attribute-set named {0} does not exist
+    //public static final int ER_NO_ATTRIB_SET           = 253;
+  
+    {
+      ER_NO_ATTRIB_SET,
+       "la serie di attributi denominata {0} \u00e8 inesistente"},
+   
+
+ // Warnings...
+
+ /** WG_FOUND_CURLYBRACE          */
+ //public static final int WG_FOUND_CURLYBRACE = 1;
+
+
+ {
+   WG_FOUND_CURLYBRACE,
+     "Trovato '}' ma non vi \u00e8 alcun modello di attributi aperto."},
+
+
+ /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+ //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+
+ {
+   WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+     "Avvertenza: l'attributo di conteggio non corrisponde a un predecessore in xsl:number! Target = {0}."},
+
+
+ /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+ //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+
+ {
+   WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+     "Sintassi precedente: il nome dell'attributo 'expr' \u00e8 stato cambiato in 'select'."},
+
+
+ /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+ //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+
+ {
+   WG_NO_LOCALE_IN_FORMATNUMBER,
+     "Xalan non gestisce ancora il nome locale nella funzione format-number."},
+
+
+ /** WG_LOCALE_NOT_FOUND          */
+ //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+
+ {
+   WG_LOCALE_NOT_FOUND,
+     "Avvertenza: impossibile trovare la versione locale per xml:lang={0}."},
+
+
+ /** WG_CANNOT_MAKE_URL_FROM          */
+ //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+
+ {
+   WG_CANNOT_MAKE_URL_FROM,
+     "Impossibile creare l'URL da: {0}."},
+
+
+ /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+ //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+
+ {
+   WG_CANNOT_LOAD_REQUESTED_DOC,
+     "Impossibile caricare il documento richiesto: {0}"},
+
+
+ /** WG_CANNOT_FIND_COLLATOR          */
+ //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+
+ {
+   WG_CANNOT_FIND_COLLATOR,
+     "Impossibile trovare il collatore per <sort xml:lang={0}."},
+
+
+ /** WG_FUNCTIONS_SHOULD_USE_URL          */
+ //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+
+ {
+   WG_FUNCTIONS_SHOULD_USE_URL,
+     "Sintassi precedente: l'istruzione delle funzioni deve utilizzare l'URL {0}"},
+
+
+ /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+ //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+
+ {
+   WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+     "codifica non supportata: {0}, utilizzando UTF-8"},
+
+
+ /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+ //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+
+ {
+   WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+     "Codifica non supportata: {0}, utilizzando Java {1}"},
+
+
+ /** WG_SPECIFICITY_CONFLICTS          */
+ //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+
+ {
+   WG_SPECIFICITY_CONFLICTS,
+     "Trovati conflitti di specificit\u00e0: {0} Sar\u00e0 utilizzato l'ultimo trovato nel foglio di stile."},
+
+
+ /** WG_PARSING_AND_PREPARING          */
+ //public static final int WG_PARSING_AND_PREPARING = 13;
+
+
+ {
+   WG_PARSING_AND_PREPARING,
+     "========= Analisi e preparazione {0} =========="},
+
+
+ /** WG_ATTR_TEMPLATE          */
+ //public static final int WG_ATTR_TEMPLATE = 14;
+
+
+ {
+   WG_ATTR_TEMPLATE, "Modello attr., {0}"},
+
+
+ /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+ //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+
+ {
+   WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+     "Conflitto di corrispondenza tra xsl:strip-space e xsl:preserve-space."},
+
+
+ /** WG_ATTRIB_NOT_HANDLED          */
+ //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+
+ {
+   WG_ATTRIB_NOT_HANDLED,
+     "Xalan non gestisce ancora l'attributo {0}."},
+
+
+ /** WG_NO_DECIMALFORMAT_DECLARATION          */
+ //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+
+ {
+   WG_NO_DECIMALFORMAT_DECLARATION,
+     "Non \u00e8 stata trovata alcuna dichiarazione per il formato decimale: {0}"},
+
+
+ /** WG_OLD_XSLT_NS          */
+ //public static final int WG_OLD_XSLT_NS = 18;
+
+
+ {
+   WG_OLD_XSLT_NS, "XSLT Namespace mancante o non valido. "},
+
+
+ /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+ //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+
+ {
+   WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+     "\u00c8 consentita solo una dichiarazione xsl:decimal-format predefinita."},
+
+
+ /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+ //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+
+ {
+   WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+     "I nomi xsl:decimal-format devono essere univoci. Il nome \"{0}\" \u00e8 duplicato."},
+
+
+ /** WG_ILLEGAL_ATTRIBUTE          */
+ //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+
+ {
+   WG_ILLEGAL_ATTRIBUTE,
+     "{0} ha un attributo non valido: {1}"},
+
+
+ /** WG_COULD_NOT_RESOLVE_PREFIX          */
+ //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+
+ {
+   WG_COULD_NOT_RESOLVE_PREFIX,
+     "Impossibile risolvere il prefisso namespace: {0}. Nodo ignorato."},
+
+
+ /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+ //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+
+ {
+   WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+     "xsl:stylesheet richiede un attributo 'versione'."},
+
+
+ /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+ //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+
+ {
+   WG_ILLEGAL_ATTRIBUTE_NAME,
+     "Nome attributo non valido: {0}"},
+
+
+ /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+ //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+
+ {
+   WG_ILLEGAL_ATTRIBUTE_VALUE,
+     "Valore non valido per l'attributo {0}: {1}."},
+
+
+ /** WG_EMPTY_SECOND_ARG          */
+ //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+
+ {
+   WG_EMPTY_SECOND_ARG,
+     "Il nodeset risultante dal secondo argomento della funzione documento \u00e8 vuoto. Sar\u00e0 utilizzato il primo argomento."},
+
+
+   // Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+ 
+     // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+     // and must not be translated.
+     // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+ 
+ 
+   /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+   //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+ 
+   {
+      WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+       "Il valore dell'attributo 'name' del nome xsl:processing-instruction name non deve essere 'xml'"},
+  
+ 
+     // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+     // and must not be translated.  "NCName" is an XML data-type and must not be
+     // translated.
+     // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+ 
+   /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+   //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+ 
+   {
+      WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+       "Il valore dell'attributo ''name'' di xsl:processing-instruction deve essere un NCName valido:a {0}"},
+  
+ 
+     // Note to translators:  This message is reported if the stylesheet that is
+     // being processed attempted to construct an XML document with an attribute in a
+     // place other than on an element.  The substitution text specifies the name of
+     // the attribute.
+     // WG_ILLEGAL_ATTRIBUTE_POSITION
+ 
+   /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+   //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+ 
+   {
+     WG_ILLEGAL_ATTRIBUTE_POSITION,
+       "Impossibile aggiungere l'attributo {0} dopo i nodi secondari o prima della produzione di un elemento.  L'attributo verr\u00e0 ignorato."},
+  
+ 
+     //WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+ 
+ // Other miscellaneous text used inside the code...
+     { "ui_language",  "it"},
+     { "help_language",  "it"},
+     { "language",  "it"},
+     { "BAD_CODE",
+     "I parametri di createMessage sono esterni ai limiti"},
+   { "FORMAT_FAILED",
+     "Eccezione generata durante la chiamata di messageFormat"},
+   { "version",
+    ">>>>>>> Xalan Versione "},
+   { "version2", "<<<<<<<"},
+   { "yes", "s\u00ec"},
+   { "line", "Linea #"},
+   { "column", "Colonna #"},
+   { "xsldone", "XSLProcessor: done"},
+   { "xslProc_option",
+   "opzioni dalla riga di comando della classe Process di Xalan-J:"},
+   { "optionIN", "    -IN inputXMLURL"},
+   { "optionXSL", "   [-XSL XSLTransformationURL]"},
+   { "optionOUT", "   [-OUT outputFileName]"},
+   { "optionLXCIN",
+     "   [-LXCIN compiledStylesheetFileNameIn]"},
+   { "optionLXCOUT",
+     "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+   { "optionPARSER",
+     "   [-PARSER nome di classe pienamente qualificato del collegamento parser]"},
+   { "optionE", "   [-E (Non espandere i rif entit\u00e0)]"},
+   { "optionV", "   [-E (Non espandere i rif entit\u00e0)]"},
+   { "optionQC", "   [-QC (Avvertenze di conflitti Quiet Pattern)]"},
+   { "optionQ", "   [-Q  (Modalit\u00e0 Quiet)]"},
+   { "optionLF",
+     "   [-LF (Usa nuove righe solo su output {valore predefinito CR/LF})]"},
+   { "optionCR",
+     "   [-CR (Usa ritorno a capo solo su output {valore predefinito CR/LF})]"},
+   { "optionESCAPE",
+     "   [-ESCAPE (Quali carattere saltare {valore predefinito <>&\"\'\\r\\n}]"},
+   { "optionINDENT",
+     "   [-INDENT (Controlla il numero di spazi del rientro {valore predefinito 0})]"},
+  { "optionTT",
+     "   [-TT (Traccia i modelli man mano che sono chiamati)]"},
+   { "optionTG", "   [-TG (Traccia ogni evento di generazione)]"},
+   { "optionTS", "   [-TS (Traccia ogni evento di selezione)]"},
+   { "optionTTC",
+     "   [-TTC (Traccia gli elementi secondari del modello man mano che sono elaborati)]"},
+   { "optionTCLASS",
+     "   [-TCLASS (Classe TraceListener per le estensioni di traccia)]"},
+   { "optionVALIDATE",
+     "   [-VALIDATE (Imposta se eseguire la validazione. Il valore predefinito \u00e8 validazione disattivata.)]"},
+   { "optionEDUMP",
+     "   [-EDUMP {nome file opzionale} (Esegue il dump dello stack in caso di errore)]"},
+   { "optionXML",
+     "   [-XML (Utilizza il formattatore XML e aggiunge l'intestazione XML)]"},
+  { "optionTEXT",
+     "   [-TEXT (Utilizza il formattatore di testo semplice)]"},
+   { "optionHTML", "   [-HTML (Utilizza il formattatore HTML)]"},
+   { "optionPARAM",
+     "   [-PARAM espressione nome (Imposta un parametro di foglio di stile)]"},
+   { "noParsermsg1", "Processo XSL non riuscito."},
+   { "noParsermsg2", "** Impossibile trovare il parser **"},
+   { "noParsermsg3", "Verificare il classpath."},
+   { "noParsermsg4",
+     "Se non si dispone del parser XML IBM per Java, scaricarlo da"},
+   { "noParsermsg5",
+     "AlphaWorks IBM: http://www.alphaworks.ibm.com/formula/xml"},
+   { "optionURIRESOLVER",
+   "   [-URIRESOLVER nome classe completo (URIResolver da utilizzare per risolvere gli URI)]"},
+   { "optionENTITYRESOLVER",
+   "   [-ENTITYRESOLVER nome classe completo (EntityResolver da utilizzare per risolvere le entit\u00e0)]"},
+   { "optionCONTENTHANDLER",
+   "   [-CONTENTHANDLER nome classe completo (ContentHandler da utilizzare per serializzare l'output)]"},
+   { "optionLINENUMBERS",
+   "   [-L utilizza i numeri di linea per i documenti sorgente]"},
+		
+// Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+ 
+ 
+   { "optionMEDIA",
+     " [-MEDIA mediaType (utilizzare l'attributo media per trovare il foglio di stile associato a un documento.)]"},
+   { "optionFLAVOR",
+     " [-FLAVOR flavorName (utilizzare esplicitamente s2s=SAX o d2d=DOM per effettuare la trasformazione.)] "}, // Aggiunto da sboag/scurcuru; sperimentale
+   { "optionDIAG",
+     " [-DIAG (stampa i millisecondi globali impiegati dalla trasformazione.)]"},
+   { "optionINCREMENTAL",
+     " [-INCREMENTAL (richiede la costruzione DTM incrementale impostando a true http://xml.apache.org/xalan/features/incremental.)]"},
+   { "optionNOOPTIMIMIZE",
+     " [-NOOPTIMIMIZE (non richiede l'elaborazione dell'ottimizzazione del foglio di stile impostando a false http://xml.apache.org/xalan/features/optimize.)]"},
+   { "optionRL",
+     " [-RL recursionlimit (garantisce il limite numerico sulla profondit\u00e0 di ricorsione del foglio di stile.)]"},
+   { "optionXO",
+     " [-XO [transletName] (assegna il nome al translet generato)]"},
+   { "optionXD",
+     " [-XD destinationDirectory (specifica una directory di destinazione per il translet)]"},
+   { "optionXJ",
+     " [-XJ jarfile (compatta la classi del translet in un file jar denominato <filejar>)]"},
+   { "optionXP",
+     " [-XP package (specifica un prefisso del nome di pacchetto per tutte le classi translet generate)]"}
+ 
+  
+ };
+
+ // ================= INFRASTRUCTURE ======================
+
+ /** String for use when a bad error code was encountered.    */
+ public static final String BAD_CODE = "BAD_CODE";
+
+ /** String for use when formatting of the error string failed.   */
+ public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+ /** General error string.   */
+ public static final String ERROR_STRING = "#error";
+
+ /** String to prepend to error messages.  */
+ public static final String ERROR_HEADER = "Errore: ";
+
+ /** String to prepend to warning messages.    */
+ public static final String WARNING_HEADER = "Avvertenza: ";
+
+ /** String to specify the XSLT module.  */
+ public static final String XSL_HEADER = "XSLT ";
+
+ /** String to specify the XML parser module.  */
+ public static final String XML_HEADER = "XML ";
+
+ /** I don't think this is used any more.
+  * @deprecated  */
+ public static final String QUERY_HEADER = "PATTERN ";
+
+ /**
+  * Get the lookup table. 
+  *
+  * @return The int to message lookup table.
+  */
+ public Object[][] getContents()
+ {
+   return contents;
+ }
+
+
+  /**
+   * Return the resource file suffic for the indicated locale
+   * For most locales, this will be based the language code.  However
+   * for Chinese, we do distinguish between Taiwan and PRC
+   *
+   * @param locale the locale
+   * @return an String suffix which canbe appended to a resource name
+   */
+  private static final String getResourceSuffix(Locale locale)
+  {
+
+    String suffix = "_" + locale.getLanguage();
+    String country = locale.getCountry();
+
+    if (country.equals("TW"))
+      suffix += "_" + country;
+
+    return suffix;
+  }
+}
+
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_ja.java b/src/org/apache/xalan/res/XSLTErrorResources_ja.java
new file mode 100644
index 0000000..5a16ac2
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_ja.java
@@ -0,0 +1,3132 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+public class XSLTErrorResources_ja extends XSLTErrorResources
+{
+
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;          
+
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+
+  {
+    ER_NO_CURLYBRACE,
+      "\u30a8\u30e9\u30fc: \u5f0f\u306e\u4e2d\u3067 '{' \u3092\u6301\u3064\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
+  //      "Error: Can not have '{' within expression"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0} \u306b\u4e0d\u5f53\u306a\u5c5e\u6027\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059: {1}"},
+  //    ER_ILLEGAL_ATTRIBUTE, "{0} has an illegal attribute: {1}"},
+
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "xsl:apply-imports \u3067 sourceNode \u304c null \u3067\u3059"},
+  //      "sourceNode is null in xsl:apply-imports!"},
+
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+
+  {
+    ER_CANNOT_ADD, "{0} \u3092 {1} \u306b\u8ffd\u52a0\u3067\u304d\u307e\u305b\u3093"},
+  //    ER_CANNOT_ADD, "Can not add {0} to {1}"},
+
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "handleApplyTemplatesInstruction \u3067 sourceNode \u304c null \u3067\u3059\u3002"},
+  //      "sourceNode is null in handleApplyTemplatesInstruction!"},
+
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+
+  {
+    ER_NO_NAME_ATTRIB, "{0} \u306b\u306f\u540d\u524d\u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //    ER_NO_NAME_ATTRIB, "{0} must have a name attribute."},
+
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "{0} \u3068\u3044\u3046\u540d\u524d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+  //    ER_TEMPLATE_NOT_FOUND, "Could not find template named: {0}"},
+
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "xls:call-template \u3067\u540d\u524d AVT \u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+  //      "Could not resolve name AVT in xsl:call-template."},
+
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+
+  {
+    ER_REQUIRES_ATTRIB, "{0} \u306b\u306f\u5c5e\u6027 {1} \u304c\u5fc5\u8981\u3067\u3059:"},
+  //    ER_REQUIRES_ATTRIB, "{0} requires attribute: {1}"},
+
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} \u306b\u306f ''test'' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //      "{0} must have a 'test' attribute."},
+
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "\u30ec\u30d9\u30eb\u5c5e\u6027\u306b\u4e0d\u6b63\u306a\u5024\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059: {0}"},
+  //      "Bad value on level attribute: {0}"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "processing-instruction \u540d\u306f 'xml' \u306b\u3067\u304d\u307e\u305b\u3093"},
+  //      "processing-instruction name can not be 'xml'"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "processing-instruction \u540d\u306f\u6709\u52b9\u306a NCName \u3067\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093: {0}"},
+  //      "processing-instruction name must be a valid NCName: {0}"},
+
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0} \u306b\u30e2\u30fc\u30c9\u304c\u3042\u308b\u5834\u5408\u3001\u4e00\u81f4\u3059\u308b\u5c5e\u6027\u3092\u6301\u305f\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002"},
+  //      "{0} must have a match attribute if it has a mode."},
+
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} \u306f name \u5c5e\u6027\u304b\u3001\u307e\u305f\u306f match \u5c5e\u6027\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059\u3002"},
+  //      "{0} requires either a name or a match attribute."},
+
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "\u540d\u524d\u7a7a\u9593\u306e\u63a5\u982d\u8f9e {0} \u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093"},
+  //      "Can not resolve namespace prefix: {0}"},
+
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space \u306b\u4e0d\u5f53\u306a\u5024\u304c\u3042\u308a\u307e\u3059: {0}"},
+  //    ER_ILLEGAL_VALUE, "xml:space has an illegal value: {0}"},
+
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+
+  {
+    ER_NO_OWNERDOC,
+      "\u5b50\u30ce\u30fc\u30c9\u306f\u6240\u6709\u8005\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4fdd\u6301\u3057\u307e\u305b\u3093\u3002"},
+  //      "Child node does not have an owner document!"},
+
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "ElemTemplateElement \u30a8\u30e9\u30fc: {0}"},
+  //    ER_ELEMTEMPLATEELEM_ERR, "ElemTemplateElement error: {0}"},
+
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+
+  {
+    ER_NULL_CHILD, "null \u3067\u3042\u308b\u5b50\u3092\u8ffd\u52a0\u3057\u3066\u3044\u307e\u3059\u3002"},
+  //    ER_NULL_CHILD, "Trying to add a null child!"},
+
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0} \u306f select \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //    ER_NEED_SELECT_ATTRIB, "{0} requires a select attribute."},
+
+
+  /** ER_NEED_TEST_ATTRIB          */
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when \u306b\u306f 'test' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //      "xsl:when must have a 'test' attribute."},
+
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param \u306b\u306f 'name' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //      "xsl:with-param must have a 'name' attribute."},
+
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u6240\u6709\u8005\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4fdd\u6301\u3057\u307e\u305b\u3093\u3002"},
+  //      "context does not have an owner document!"},
+
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "XML TransformerFactory Liaison {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+  //      "Could not create XML TransformerFactory Liaison: {0}"},
+
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: \u30d7\u30ed\u30bb\u30b9\u306f\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+  //      "Xalan: Process was not successful."},
+
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan: \u306f\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+  //    ER_NOT_SUCCESSFUL, "Xalan: was not successful."},
+
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0}"},
+  //    ER_ENCODING_NOT_SUPPORTED, "Encoding not supported: {0}"},
+
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "TraceListener \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0}"},
+  //      "Could not create TraceListener: {0}"},
+
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key \u306b\u306f 'name' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //      "xsl:key requires a 'name' attribute!"},
+
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key \u306b\u306f 'match' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //      "xsl:key requires a 'match' attribute!"},
+
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key \u306b\u306f 'use' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //     "xsl:key requires a 'use' attribute!"},
+
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} \u306b\u306f ''elements'' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+  //      "(StylesheetHandler) {0} requires an 'elements' attribute!"},
+
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} \u5c5e\u6027\u306b ''prefix'' \u304c\u8db3\u308a\u307e\u305b\u3093"},
+  //      "(StylesheetHandler) {0} attribute 'prefix' is missing"},
+
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+
+  {
+    ER_BAD_STYLESHEET_URL, "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e URL \u304c\u4e0d\u6b63\u3067\u3059: {0}"},
+  //    ER_BAD_STYLESHEET_URL, "Stylesheet URL is bad: {0}"},
+
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+
+  {
+    ER_FILE_NOT_FOUND, "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0}"},
+//    ER_FILE_NOT_FOUND, "Stylesheet file was not found: {0}"},
+
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+
+  {
+    ER_IOEXCEPTION,
+      "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3067\u5165\u51fa\u529b\u4f8b\u5916\u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}"},
+//      "Had IO Exception with stylesheet file: {0}"},
+
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) {0} \u306e href \u5c5e\u6027\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//      "(StylesheetHandler) Could not find href attribute for {0}"},
+
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} \u306f\u76f4\u63a5\u7684\u307e\u305f\u306f\u9593\u63a5\u7684\u306b\u81ea\u8eab\u3092\u30a4\u30f3\u30af\u30eb\u30fc\u30c9\u3057\u3066\u3044\u307e\u3059\u3002"},
+//      "(StylesheetHandler) {0} is directly or indirectly including itself!"},
+
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude \u30a8\u30e9\u30fc\u3001{0}"},
+//      "StylesheetHandler.processInclude error, {0}"},
+
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} \u5c5e\u6027 ''lang'' \u304c\u8db3\u308a\u307e\u305b\u3093"},
+//      "(StylesheetHandler) {0} attribute 'lang' is missing"},
+
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) {0} \u8981\u7d20\u3092\u914d\u7f6e\u3057\u5fd8\u308c\u3066\u3044\u307e\u305b\u3093\u304b?? \u30b3\u30f3\u30c6\u30ca\u8981\u7d20 ''component'' \u304c\u8db3\u308a\u307e\u305b\u3093"},
+//      "(StylesheetHandler) misplaced {0} element?? Missing container element 'component'"},
+
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "Element\u3001DocumentFragment\u3001Document\u3001\u307e\u305f\u306f PrintWriter \u306b\u3060\u3051\u51fa\u529b\u3067\u304d\u307e\u3059\u3002"},
+//      "Can only output to an Element, DocumentFragment, Document, or PrintWriter."},
+
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+
+  {
+    ER_PROCESS_ERROR, "StylesheetRoot.process \u30a8\u30e9\u30fc"},
+//    ER_PROCESS_ERROR, "StylesheetRoot.process error"},
+
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+
+  {
+    ER_UNIMPLNODE_ERROR, "UnImplNode \u30a8\u30e9\u30fc: {0}"},
+//    ER_UNIMPLNODE_ERROR, "UnImplNode error: {0}"},
+
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "\u30a8\u30e9\u30fc\u3002xpath \u306e\u9078\u629e\u5f0f (-select) \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//      "Error! Did not find xpath select expression (-select)."},
+
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "XSLProcessor \u3092\u76f4\u5217\u5316\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can not serialize an XSLProcessor!"},
+
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u5165\u529b\u304c\u6307\u5b9a\u3055\u308c\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//      "Stylesheet input was not specified!"},
+
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3067\u306e\u51e6\u7406\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
+//      "Failed to process stylesheet!"},
+
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+
+  {
+    ER_COULDNT_PARSE_DOC, "{0} \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u69cb\u6587\u89e3\u6790\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//    ER_COULDNT_PARSE_DOC, "Could not parse {0} document!"},
+
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//    ER_COULDNT_FIND_FRAGMENT, "Could not find fragment: {0}"},
+
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u8b58\u5225\u5b50\u304c\u6307\u3059\u30ce\u30fc\u30c9\u304c\u8981\u7d20\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3067\u3057\u305f: {0}"},
+//      "Node pointed to by fragment identifier was not an element: {0}"},
+
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each \u306f match \u5c5e\u6027\u307e\u305f\u306f name \u5c5e\u6027\u3092\u6301\u305f\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//      "for-each must have either a match or name attribute"},
+
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306f match \u5c5e\u6027\u307e\u305f\u306f name \u5c5e\u6027\u3092\u6301\u305f\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//      "templates must have either a match or name attribute"},
+
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306b\u30af\u30ed\u30fc\u30f3\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "No clone of a document fragment!"},
+
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "\u7d50\u679c\u30c4\u30ea\u30fc\u306b\u9805\u76ee\u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: {0}"},
+//      "Can not create item in result tree: {0}"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "\u30bd\u30fc\u30b9 XML \u306e xml:space \u306b\u4e0d\u5f53\u306a\u5024\u304c\u3042\u308a\u307e\u3059: {0}"},
+//      "xml:space in the source XML has an illegal value: {0}"},
+
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "{0} \u306b xsl:key \u5ba3\u8a00\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "There is no xsl:key declaration for {0}!"},
+
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+
+  {
+    ER_CANT_CREATE_URL, "\u30a8\u30e9\u30fc\u3002{0} \u306e URL \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093"},
+//    ER_CANT_CREATE_URL, "Error! Cannot create url for: {0}"},
+
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//    ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions is unsupported"},
+
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+
+  {
+    ER_PROCESSOR_ERROR, "XSLT TransformerFactory \u30a8\u30e9\u30fc"},
+//    ER_PROCESSOR_ERROR, "XSLT TransformerFactory Error"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} \u306f\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u5185\u3067\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "(StylesheetHandler) {0} not allowed inside a stylesheet!"},
+
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "result-ns \u306f\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b xsl:output \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
+//      "result-ns no longer supported!  Use xsl:output instead."},
+
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "default-space \u306f\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b xsl:strip-space \u307e\u305f\u306f xsl:preserve-space \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
+//      "default-space no longer supported!  Use xsl:strip-space or xsl:preserve-space instead."},
+
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result \u306f\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b xsl:output \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
+//      "indent-result no longer supported!  Use xsl:output instead."},
+
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} \u306b\u4e0d\u5f53\u306a\u5c5e\u6027\u304c\u3042\u308a\u307e\u3059: {1}"},
+//      "(StylesheetHandler) {0} has an illegal attribute: {1}"},
+
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "\u672a\u77e5\u306e XSL \u8981\u7d20: {0}"},
+//    ER_UNKNOWN_XSL_ELEM, "Unknown XSL element: {0}"},
+
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort \u306f xsl:apply-templates \u307e\u305f\u306f xsl:for-each \u3068\u3044\u3063\u3057\u3087\u306b\u306e\u307f\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002"},
+//      "(StylesheetHandler) xsl:sort can only be used with xsl:apply-templates or xsl:for-each."},
+
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) xsl:when \u306e\u914d\u7f6e\u304c\u8aa4\u3063\u3066\u3044\u307e\u3059\u3002"},
+//      "(StylesheetHandler) misplaced xsl:when!"},
+
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when \u306e\u89aa\u306f xsl:choose \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "(StylesheetHandler) xsl:when not parented by xsl:choose!"},
+
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) xsl:otherwise \u306e\u914d\u7f6e\u304c\u8aa4\u3063\u3066\u3044\u307e\u3059\u3002"},
+//      "(StylesheetHandler) misplaced xsl:otherwise!"},
+
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise \u306e\u89aa\u306f xsl:choose \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "(StylesheetHandler) xsl:otherwise not parented by xsl:choose!"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} \u306f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u4e2d\u306b\u7f6e\u304f\u3053\u3068\u3092\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "(StylesheetHandler) {0} is not allowed inside a template!"},
+
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} \u62e1\u5f35\u540d\u524d\u7a7a\u9593\u306e\u63a5\u982d\u8f9e {1} \u304c\u672a\u77e5\u3067\u3059"},
+//      "(StylesheetHandler) {0} extension namespace prefix {1} unknown"},
+
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) \u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u6700\u521d\u306e\u8981\u7d20\u3067\u306e\u307f\u30a4\u30f3\u30dd\u30fc\u30c8\u304c\u5b9f\u884c\u53ef\u80fd\u3067\u3059\u3002"},
+//      "(StylesheetHandler) Imports can only occur as the first elements in the stylesheet!"},
+
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} \u306f\u76f4\u63a5\u7684\u307e\u305f\u306f\u9593\u63a5\u7684\u306b\u81ea\u8eab\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002"},
+//      "(StylesheetHandler) {0} is directly or indirectly importing itself!"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space \u306b\u4e0d\u5f53\u306a\u5024\u304c\u3042\u308a\u307e\u3059: {0}"},
+//      "(StylesheetHandler) " + "xml:space has an illegal value: {0}"},
+
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet \u306f\u6210\u529f\u3057\u307e\u305b\u3093\u3002"},
+//      "processStylesheet not succesfull!"},
+
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+
+  {
+    ER_SAX_EXCEPTION, "SAX \u4f8b\u5916"},
+//    ER_SAX_EXCEPTION, "SAX Exception"},
+
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "Function \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002"},
+//    ER_FUNCTION_NOT_SUPPORTED, "Function not supported!"},
+
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+
+  {
+    ER_XSLT_ERROR, "XSLT \u30a8\u30e9\u30fc"},
+//    ER_XSLT_ERROR, "XSLT Error"},
+
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "\u901a\u8ca8\u8a18\u53f7\u306f\u66f8\u5f0f\u30d1\u30bf\u30fc\u30f3\u6587\u5b57\u5217\u3067\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "currency sign is not allowed in format pattern string"},
+
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "Document \u95a2\u6570\u306f Stylesheet DOM \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "Document function not supported in Stylesheet DOM!"},
+
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "non-Prefix \u30ea\u30be\u30eb\u30d0\u306e\u63a5\u982d\u8f9e\u306f\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can't resolve prefix of non-Prefix resolver!"},
+
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Rediret \u62e1\u5f35: \u30d5\u30a1\u30a4\u30eb\u540d\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f - file \u5c5e\u6027\u307e\u305f\u306f select \u5c5e\u6027\u304c\u6709\u52b9\u306a\u6587\u5b57\u5217\u3092\u623b\u3059\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002 "},
+//      "Redirect extension: Could not get filename - file or select attribute must return vald string."},
+
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "Redirect \u62e1\u5f35\u3067 FormatterListener \u3092\u69cb\u7bc9\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can not build FormatterListener in Redirect extension!"},
+
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "exclude-result-prefixes \u306e\u63a5\u982d\u8f9e\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0}"},
+//      "Prefix in exclude-result-prefixes is not valid: {0}"},
+
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+
+  {
+    ER_MISSING_NS_URI,
+      "\u6307\u5b9a\u3055\u308c\u305f\u63a5\u982d\u8f9e\u306e\u540d\u524d\u7a7a\u9593 URI \u304c\u3042\u308a\u307e\u305b\u3093"},
+//      "Missing namespace URI for specified prefix"},
+
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u5f15\u6570\u304c\u3042\u308a\u307e\u305b\u3093: {0}"},
+//      "Missing argument for option: {0}"},
+
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+
+  {
+    ER_INVALID_OPTION, "\u7121\u52b9\u306a\u30aa\u30d7\u30b7\u30e7\u30f3: {0}"},
+//    ER_INVALID_OPTION, "Invalid option: {0}"},
+
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "\u5f62\u5f0f\u306e\u8aa4\u3063\u305f\u6587\u5b57\u5217: {0}"},
+//    ER_MALFORMED_FORMAT_STRING, "Malformed format string: {0}"},
+
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet \u306b\u306f 'version' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+//      "xsl:stylesheet requires a 'version' attribute!"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "\u5c5e\u6027: {0} \u306b\u4e0d\u5f53\u306a\u5024\u304c\u3042\u308a\u307e\u3059: {1}"},
+//      "Attribute: {0} has an illegal value: {1}"},
+
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose \u306b\u306f xsl:when \u304c\u5fc5\u8981\u3067\u3059"},
+//    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose requires an xsl:when"},
+
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports \u306f xsl:for-each \u3067\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093"},
+//      "xsl:apply-imports not allowed in a xsl:for-each"},
+
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "\u51fa\u529b DOM \u30ce\u30fc\u30c9\u306b DTMLiaison \u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093... \u4ee3\u308f\u308a\u306b org.apache.xpath.DOM2Helper \u3092\u6e21\u3057\u307e\u3059\u3002"},
+//      "Cannot use a DTMLiaison for an output DOM node... pass a org.apache.xpath.DOM2Helper instead!"},
+
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "\u5165\u529b DOM \u30ce\u30fc\u30c9\u306b DTMLiaison \u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093... \u4ee3\u308f\u308a\u306b org.apache.xpath.DOM2Helper \u3092\u6e21\u3057\u307e\u3059\u3002"},
+//      "Cannot use a DTMLiaison for a input DOM node... pass a org.apache.xpath.DOM2Helper instead!"},
+
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "\u62e1\u5f35\u8981\u7d20\u306e\u547c\u3073\u51fa\u3057\u306b\u5931\u6557\u3057\u307e\u3057\u305f: {0}"},
+//      "Call to extension element failed: {0}"},
+
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\u63a5\u982d\u8f9e\u306f\u540d\u524d\u7a7a\u9593\u306b\u5909\u308f\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0}"},
+//      "Prefix must resolve to a namespace: {0}"},
+
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\u7121\u52b9\u306a UTF-16 \u4ee3\u7406\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f: {0} ?"},
+//      "Invalid UTF-16 surrogate detected: {0} ?"},
+
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} \u306f\u81ea\u8eab\u3092\u4f7f\u7528\u3057\u305f\u305f\u3081\u3001\u7121\u9650\u30eb\u30fc\u30d7\u304c\u767a\u751f\u3057\u307e\u3059\u3002"},
+//      "xsl:attribute-set {0} used itself, which will cause an infinite loop."},
+
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "\u975e Xerces-DOM \u5165\u529b\u3068 Xerces-DOM \u51fa\u529b\u3092\u6df7\u5408\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can not mix non Xerces-DOM input with Xerces-DOM output!"},
+
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+//      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "ElemTemplateElement.readObject \u306b {0} \u304c\u3042\u308a\u307e\u3059"},
+//      "In ElemTemplateElement.readObject: {0}"},
+
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "\u4ee5\u4e0b\u306b\u793a\u3059\u540d\u524d\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u8907\u6570\u898b\u3064\u304b\u308a\u307e\u3057\u305f: {0}"},
+//      "Found more than one template named: {0}"},
+
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+
+  {
+    ER_INVALID_KEY_CALL,
+      "\u7121\u52b9\u306a\u95a2\u6570\u547c\u3073\u51fa\u3057: recursive key() \u547c\u3073\u51fa\u3057\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093"},
+//      "Invalid function call: recursive key() calls are not allowed"},
+
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+
+  {
+    ER_REFERENCING_ITSELF,
+      "\u5909\u6570 {0} \u306f\u76f4\u63a5\u7684\u307e\u305f\u306f\u9593\u63a5\u7684\u306b\u81ea\u8eab\u3092\u53c2\u7167\u3057\u3066\u3044\u307e\u3059\u3002"},
+//      "Variable {0} is directly or indirectly referencing itself!"},
+
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "newTemplates \u306e DOMSource \u306b\u5bfe\u3059\u308b\u5165\u529b\u30ce\u30fc\u30c9\u306f null \u306b\u3067\u304d\u307e\u305b\u3093\u3002 "},
+//      "The input node can not be null for a DOMSource for newTemplates!"},
+
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"\u30aa\u30d7\u30b7\u30e7\u30f3 {0} \u306b\u5bfe\u3059\u308b\u30af\u30e9\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"},
+//			"Class file not found for option {0}"},
+
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"\u5fc5\u8981\u306a\u8981\u7d20\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
+//			"Required Element not found: {0}"},
+
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream \u306f null \u306b\u3067\u304d\u307e\u305b\u3093"},
+//			"InputStream cannot be null"},
+
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI \u306f null \u306b\u3067\u304d\u307e\u305b\u3093"},
+//			"URI cannot be null"},
+
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"File \u306f null \u306b\u3067\u304d\u307e\u305b\u3093"},
+//			"File cannot be null"},
+
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource \u306f null \u306b\u3067\u304d\u307e\u305b\u3093"},
+//			"InputSource cannot be null"},
+
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"cause \u3092\u4e0a\u66f8\u304d\u3067\u304d\u307e\u305b\u3093"},
+//			"Cannot overwrite cause"},
+
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"BSF Manager \u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//			"Could not initialize BSF Manager"},
+
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"\u62e1\u5f35\u3092\u30b3\u30f3\u30d1\u30a4\u30eb\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//			"Could not compile extension"},
+
+  
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+       "\u62e1\u5f35 {0} \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u539f\u56e0: {1}"},
+//      "Could not create extension: {0} because of: {1}"},
+
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "\u30e1\u30bd\u30c3\u30c9 {0} \u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u30e1\u30bd\u30c3\u30c9\u547c\u3073\u51fa\u3057\u306f\u3001\u6700\u521d\u306e\u5f15\u6570\u306b Objcet \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u5fc5\u8981\u3068\u3057\u307e\u3059"},
+//      "Instance method call to method {0} requires an Object instance as first argument"},
+
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "\u7121\u52b9\u306a\u8981\u7d20\u540d\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f {0}"},
+//      "Invalid element name specified {0}"},
+
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "\u8981\u7d20\u540d\u30e1\u30bd\u30c3\u30c9\u306f static \u3067\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093 {0}"},
+//      "Element name method must be static {0}"},
+
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "\u62e1\u5f35\u95a2\u6570 {0} : {1} \u306f\u672a\u77e5\u3067\u3059"},
+//             "Extension function {0} : {1} is unknown"},
+
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "{0} \u306e\u30b3\u30f3\u30b9\u30c8\u30e9\u30af\u30bf\u306b\u6700\u9069\u306a\u4e00\u81f4\u304c\u8907\u6570\u500b\u3042\u308a\u307e\u3059 {0}"},
+//             "More than one best match for constructor for {0}"},
+
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "\u30e1\u30bd\u30c3\u30c9 {0} \u306b\u6700\u9069\u306a\u4e00\u81f4\u304c\u8907\u6570\u500b\u3042\u308a\u307e\u3059"},
+//             "More than one best match for method {0}"},
+
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "\u8981\u7d20\u30e1\u30bd\u30c3\u30c9 {0} \u306b\u6700\u9069\u306a\u4e00\u81f4\u304c\u8907\u6570\u500b\u3042\u308a\u307e\u3059"},
+//             "More than one best match for element method {0}"},
+
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "{0} \u3092\u8a55\u4fa1\u3059\u308b\u306e\u306b\u7121\u52b9\u306a\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u304c\u6e21\u3055\u308c\u307e\u3057\u305f"},
+//             "Invalid context passed to evaluate {0}"},
+
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+
+  {
+    ER_POOL_EXISTS,
+             "Pool \u304c\u3059\u3067\u306b\u5b58\u5728\u3057\u307e\u3059"},
+//             "Pool already exists"},
+
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+
+  {
+    ER_NO_DRIVER_NAME,
+             "\u30c9\u30e9\u30a4\u30d0\u306e Name \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//             "No driver Name specified"},
+
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+
+  {
+    ER_NO_URL,
+             "URL \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//             "No URL specified"},
+
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "1 \u3088\u308a\u5c0f\u3055\u3044 Pool \u306e\u30b5\u30a4\u30ba\u3067\u3059\u3002"},
+//             "Pool size is less than one!"},
+
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+
+  {
+    ER_INVALID_DRIVER,
+             "\u7121\u52b9\u306a\u30c9\u30e9\u30a4\u30d0\u540d\u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002"},
+//             "Invalid driver name specified!"},
+
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u30eb\u30fc\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//             "Did not find the stylesheet root!"},
+
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "xml:space \u306b\u4e0d\u5f53\u306a\u5024\u3067\u3059"},
+//         "Illegal value for xml:space"},
+
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "processFromNode \u304c\u5931\u6557\u3057\u307e\u3057\u305f"},
+//         "processFromNode failed"},
+
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "\u30ea\u30bd\u30fc\u30b9 [ {0} ] \u306f\u6b21\u306e\u3082\u306e\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {1} \n {2} \t {3}"},
+//        "The resource [ {0} ] could not load: {1} \n {2} \t {3}"},
+
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "\u30d0\u30c3\u30d5\u30a1\u30b5\u30a4\u30ba <=0"},
+//        "Buffer size <=0"},
+
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "\u62e1\u5f35\u3092\u547c\u3073\u51fa\u3059\u3068\u304d\u306b\u672a\u77e5\u306e\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f"},
+//        "Unknown error when calling extension"},
+
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "\u63a5\u982d\u8f9e {0} \u306b\u306f\u5bfe\u5fdc\u3059\u308b\u540d\u524d\u7a7a\u9593\u5ba3\u8a00\u304c\u3042\u308a\u307e\u305b\u3093"},
+//        "Prefix {0} does not have a corresponding namespace declaration"},
+
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "\u8981\u7d20\u306e\u5185\u5bb9\u306f lang=javaclass {0} \u306b\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093"},
+//        "Element content not allowed for lang=javaclass {0}"},
+     
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306b\u3088\u308a\u7d42\u4e86\u304c\u6307\u793a\u3055\u308c\u307e\u3057\u305f"},
+//        "Stylesheet directed termination"},
+
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+
+  {
+    ER_ONE_OR_TWO,
+        "1 \u307e\u305f\u306f 2"},
+//        "1 or 2"},
+
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+
+  {
+    ER_TWO_OR_THREE,
+        "2 \u307e\u305f\u306f 3"},
+//        "2 or 3"},
+
+  
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "{0} \u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f (CLASSPATH \u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044)\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3060\u3051\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002"},
+//        "Could not load {0} (check CLASSPATH), now using just the defaults"},
+
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093"},
+//        "Cannot initialize default templates"},
+
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+
+  {
+    ER_RESULT_NULL,
+        "Result \u306f null \u306b\u306f\u3067\u304d\u307e\u305b\u3093"},
+//        "Result should not be null"},
+
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "Result \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//        "Result could not be set"},
+
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "\u51fa\u529b\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//        "No output specified"},
+
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "\u30bf\u30a4\u30d7 {0} \u306e Result \u306b\u5909\u5f62\u3067\u304d\u307e\u305b\u3093"},
+//        "Can't transform to a Result of type {0}"},
+
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "\u30bf\u30a4\u30d7 {0} \u306e Source \u306b\u5909\u5f62\u3067\u304d\u307e\u305b\u3093"},
+//        "Can't transform a Source of type {0}"},
+
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "Null \u30b3\u30f3\u30c6\u30f3\u30c4\u30cf\u30f3\u30c9\u30e9"},
+//        "Null content handler"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Null \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9"},
+//        "Null error handler"},
+
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "ContentHandler \u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u69cb\u6587\u89e3\u6790\u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093"},
+//        "parse can not be called if the ContentHandler has not been set"},
+
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "\u30d5\u30a3\u30eb\u30bf\u51e6\u7406\u3059\u308b\u89aa\u304c\u3042\u308a\u307e\u305b\u3093"},
+//        "No parent for filter"},
+
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "{0} \u306b\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u30e1\u30c7\u30a3\u30a2= {1}"},
+//         "No stylesheet found in: {0}, media= {1}"},
+
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "xml-stylesheet PI \u304c {0} \u306b\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//         "No xml-stylesheet PI found in: {0}"},
+
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "\u30c7\u30d5\u30a9\u30eb\u30c8\u5b9f\u88c5\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"},
+//         "No default implementation found "},
+
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0}) \u306f\u73fe\u5728\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "ChunkedIntArray({0}) not currently supported"},
+
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "\u30b9\u30ed\u30c3\u30c8\u3088\u308a\u3082\u5927\u304d\u3044\u30aa\u30d5\u30bb\u30c3\u30c8"},
+//       "Offset bigger than slot"},
+
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "\u30b3\u30eb\u30fc\u30c1\u30f3\u306f\u7121\u52b9\u3067\u3059\u3002id={0}"},
+//       "Coroutine not available, id={0}"},
+
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager \u306f co_exit() \u8981\u6c42\u3092\u53d7\u3051\u53d6\u308a\u307e\u3057\u305f"},
+//       "CoroutineManager received co_exit() request"},
+
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet() \u306f\u5931\u6557\u3057\u307e\u3057\u305f"},
+//       "co_joinCoroutineSet() failed"},
+
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+
+  {
+    ER_COROUTINE_PARAM,
+       "\u30b3\u30eb\u30fc\u30c1\u30f3\u30d1\u30e9\u30e1\u30fc\u30bf\u30a8\u30e9\u30fc ({0})"},
+//       "Coroutine parameter error ({0})"},
+
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: \u30d1\u30fc\u30b5 doTerminate \u306e\u7b54\u3048 {0}"},
+//       "\nUNEXPECTED: Parser doTerminate answers {0}"},
+
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "\u69cb\u6587\u89e3\u6790\u4e2d\u306b parse \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
+//       "parse may not be called while parsing"},
+
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\u30a8\u30e9\u30fc: \u5165\u529b\u3055\u308c\u305f\u8ef8\u306e\u53cd\u5fa9\u5b50 {0} \u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "Error: typed iterator for axis  {0} not implemented"},
+
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\u30a8\u30e9\u30fc: \u8ef8\u306e\u53cd\u5fa9\u5b50 {0} \u306f\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "Error: iterator for axis {0} not implemented "},
+
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "\u53cd\u5fa9\u5b50\u30af\u30ed\u30fc\u30f3\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "Iterator clone not supported"},
+
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "\u672a\u77e5\u306e\u8ef8\u30c8\u30e9\u30d0\u30fc\u30b5\u30eb\u30bf\u30a4\u30d7: {0}"},
+//       "Unknown axis traversal type: {0}"},
+
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "\u8ef8\u30c8\u30e9\u30d0\u30fc\u30b5\u30eb\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093: {0}"},
+//       "Axis traverser not supported: {0}"},
+
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "\u3053\u308c\u4ee5\u4e0a\u306e DTM ID \u306f\u7121\u52b9\u3067\u3059"},
+//       "No more DTM IDs are available"},
+
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+
+  {
+    ER_NOT_SUPPORTED,
+       "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093: {0}"},
+//       "Not supported: {0}"},
+
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+
+  {
+    ER_NODE_NON_NULL,
+       "getDTMHandleFromNode \u306e\u30ce\u30fc\u30c9\u306f null \u4ee5\u5916\u3067\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//       "Node must be non-null for getDTMHandleFromNode"},
+
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "\u30ce\u30fc\u30c9\u3092\u30cf\u30f3\u30c9\u30eb\u306b\u5909\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//       "Could not resolve the node to a handle"},
+
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "\u69cb\u6587\u89e3\u6790\u4e2d\u306b startParse \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
+//       "startParse may not be called while parsing"},
+
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse \u306f null \u3067\u306a\u3044 SAXParser \u3092\u5fc5\u8981\u3068\u3057\u307e\u3059"},
+//       "startParse needs a non-null SAXParser"},
+
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "\u30d1\u30fc\u30b5\u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//       "could not initialize parser with"},
+
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "\u30d7\u30ed\u30d1\u30c6\u30a3 {0} \u306e\u5024\u306f Boolean \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3067\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//       "Value for property {0} should be a Boolean instance"},
+
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "\u4f8b\u5916\u306b\u3088\u308a\u30d7\u30fc\u30eb\u306b\u65b0\u3057\u3044\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u3092\u4f5c\u6210\u3057\u3066\u3044\u307e\u3059"},
+//       "exception creating new instance for pool"},
+
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "\u30d1\u30b9\u306b\u7121\u52b9\u306a\u30a8\u30b9\u30b1\u30fc\u30d7\u30b7\u30fc\u30b1\u30f3\u30b9\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059"},
+//       "Path contains invalid escape sequence"},
+
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+
+  {
+    ER_SCHEME_REQUIRED,
+       "\u30b9\u30ad\u30fc\u30de\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+//       "Scheme is required!"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "URI \u306b\u30b9\u30ad\u30fc\u30de\u304c\u3042\u308a\u307e\u305b\u3093: {0}"},
+//       "No scheme found in URI: {0}"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+
+  {
+    ER_NO_SCHEME_INURI,
+       "URI \u306b\u30b9\u30ad\u30fc\u30de\u304c\u3042\u308a\u307e\u305b\u3093"},
+//       "No scheme found in URI"},
+
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "\u30d1\u30b9\u306b\u7121\u52b9\u306a\u6587\u5b57\u5217\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059: {0}"},
+//       "Path contains invalid character: {0}"},
+
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "null \u6587\u5b57\u5217\u304b\u3089\u30b9\u30ad\u30fc\u30de\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//       "Cannot set scheme from null string"},
+
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "\u30b9\u30ad\u30fc\u30de\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002"},
+//       "The scheme is not conformant."},
+
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "\u30db\u30b9\u30c8\u304c\u6b63\u3057\u3044\u5f62\u5f0f\u306e\u30a2\u30c9\u30ec\u30b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
+//      "Host is not a well formed address"},
+
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "\u30db\u30b9\u30c8\u304c null \u306e\u3068\u304d\u3001\u30dd\u30fc\u30c8\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//       "Port cannot be set when host is null"},
+
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+
+  {
+    ER_INVALID_PORT,
+       "\u7121\u52b9\u306a\u30dd\u30fc\u30c8\u756a\u53f7"},
+//       "Invalid port number"},
+
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "\u6c4e\u7528 URI \u306b\u5bfe\u3057\u3066\u306e\u307f\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059"},
+//       "Fragment can only be set for a generic URI"},
+
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "\u30d1\u30b9\u304c null \u306e\u3068\u304d\u3001\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u3092\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//       "Fragment cannot be set when path is null"},
+
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306b\u7121\u52b9\u306a\u6587\u5b57\u5217\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u3059"},
+//       "Fragment contains invalid character"},
+
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+
+  {
+    ER_PARSER_IN_USE,
+        "\u30d1\u30fc\u30b5\u306f\u3059\u3067\u306b\u4f7f\u308f\u308c\u3066\u3044\u307e\u3059"},
+//        "Parser is already in use"},
+
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "\u69cb\u6587\u89e3\u6790\u4e2d\u3001{0} {1} \u3092\u5909\u66f4\u3067\u304d\u307e\u305b\u3093"},
+//        "Cannot change {0} {1} while parsing"},
+
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "\u81ea\u8eab\u304c\u539f\u56e0\u3068\u306a\u3063\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//        "Self-causation not permitted"},
+
+  
+   /** src attribute not yet supported for  */
+  //public static final int ER_COULD_NOT_FIND_EXTERN_SCRIPT = 195;
+
+
+  {
+    ER_COULD_NOT_FIND_EXTERN_SCRIPT,
+         "{0} \u306b\u3042\u308b\u5916\u90e8\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5165\u624b\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//         "Could not get to external script at {0}"},
+
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "\u30ea\u30bd\u30fc\u30b9 [ {0} ] \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f.\n {1}"},
+//        "The resource [ {0} ] could not be found.\n {1}"},
+
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "\u51fa\u529b\u30d7\u30ed\u30d1\u30c6\u30a3\u304c\u8a8d\u3081\u3089\u308c\u307e\u305b\u3093: {0}"},
+//        "Output property not recognized: {0}"},
+
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "\u30db\u30b9\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u304d\u3001Userinfo \u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//        "Userinfo may not be specified if host is not specified"},
+
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "\u30db\u30b9\u30c8\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u306a\u3044\u3068\u304d\u3001Port \u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//        "Port may not be specified if host is not specified"},
+
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "\u30d1\u30b9\u304a\u3088\u3073\u7167\u4f1a\u6587\u5b57\u5217\u3067 Query \u6587\u5b57\u5217\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//        "Query string cannot be specified in path and query string"},
+
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "\u30d1\u30b9\u304a\u3088\u3073\u30d5\u30e9\u30b0\u30e1\u30f3\u30c8\u306e\u4e21\u65b9\u3067\u3001Fragment \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093"},
+//        "Fragment cannot be specified in both the path and fragment"},
+
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "\u7a7a\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u3063\u3066 URI \u3092\u521d\u671f\u5316\u3067\u304d\u307e\u305b\u3093"},
+//        "Cannot initialize URI with empty parameters"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "ElemLiteralResult \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f"},
+//        "Failed creating ElemLiteralResult instance"},
+    
+  
+  // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. - nb.
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "\u25bc{0} \u306e\u5024\u306b\u89e3\u6790\u53ef\u80fd\u306a\u6570\u5b57\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
+//        "Value for {0} should contain a parsable number"},
+
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        " {0} \u306e\u5024\u306f yes \u307e\u305f\u306f no \u306e\u3044\u305a\u308c\u304b\u3067\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//        " Value for {0} should equal yes or no"},
+
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        " {0} \u30e1\u30bd\u30c3\u30c9\u306e\u547c\u3073\u51fa\u3057\u306b\u5931\u6557\u3057\u307e\u3057\u305f"},
+//        " Failed calling {0} method"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "ElemTemplateElement \u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306e\u4f5c\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f"},
+//        "Failed creating ElemTemplateElement instance"},
+
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u3053\u306e\u90e8\u5206\u3067\u3001\u6587\u5b57\u5217\u306f\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093"},
+//        "Characters are not allowed at this point in the document"},
+
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "\"{0}\" \u5c5e\u6027\u306f {1} \u8981\u7d20\u3067\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
+//        "\"{0}\" attribute is not allowed on the {1} element!"},
+
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "\u30e1\u30bd\u30c3\u30c9\u306f\u307e\u3060\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//        "Method not yet supported "},
+
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+
+  {
+    ER_BAD_VALUE,
+     "{0} \u8aa4\u3063\u305f\u5024 {1} "},
+//     "{0} bad value {1} "},
+
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "{0} \u5c5e\u6027\u5024\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"},
+//     "{0} attribute value not found "},
+
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "{0} \u5c5e\u6027\u5024\u304c\u8a8d\u3081\u3089\u308c\u307e\u305b\u3093"},
+//     "{0} attribute value not recognized "},
+
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter \u306f\u73fe\u5728\u518d\u8d77\u52d5\u3067\u304d\u307e\u305b\u3093"},
+//     "IncrementalSAXSource_Filter not currently restartable"},
+
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader \u306f startParse \u8981\u6c42\u3088\u308a\u524d\u306b\u914d\u7f6e\u3067\u304d\u307e\u305b\u3093"},
+//     "XMLReader not before startParse request"},
+
+  
+    /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "null URI \u3092\u4f7f\u3063\u3066\u540d\u524d\u7a7a\u9593\u306e\u63a5\u982d\u8f9e\u3092\u751f\u6210\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059"},
+      
+
+  // Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "\u25bcLong \u578b\u6574\u6570\u306e\u6700\u5927\u5024\u3092\u8d85\u3048\u308b\u6570\u5b57\u3092\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u307e\u3059"},
+//     "Attempting to format a number bigger than the largest Long integer"},
+
+
+//ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "\u25bcSAX1 \u30c9\u30e9\u30a4\u30d0\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"},
+//     "Cannot find SAX1 driver class {0}"},
+
+
+//ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "\u25bcSAX1 \u30c9\u30e9\u30a4\u30d0\u30af\u30e9\u30b9 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u304c\u3001\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093"},
+//     "SAX1 driver class {0} found but cannot be loaded"},
+
+
+//ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "\u25bcSAX1 \u30c9\u30e9\u30a4\u30d0\u30af\u30e9\u30b9 {0} \u304c\u30ed\u30fc\u30c9\u3055\u308c\u307e\u3057\u305f\u304c\u3001\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5316\u3067\u304d\u307e\u305b\u3093"},
+//     "SAX1 driver class {0} loaded but cannot be instantiated"},
+
+
+
+// ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "\u25bcSAX1 \u30c9\u30e9\u30a4\u30d0\u30af\u30e9\u30b9 {0} \u304c org.xml.sax.Parser \u3092\u5b9f\u88c5\u3057\u3066\u3044\u307e\u305b\u3093"},
+//     "SAX1 driver class {0} does not implement org.xml.sax.Parser"},
+
+
+// ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "\u25bc\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3 org.xml.sax.parser \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//     "System property org.xml.sax.parser not specified"},
+
+
+//ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "\u25bc\u30d1\u30fc\u30b5\u5c5e\u6027\u306f null \u306b\u3067\u304d\u307e\u305b\u3093"},
+//     "Parser argument must not be null"},
+
+
+
+// ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+
+  {
+    ER_FEATURE,
+     "\u25bc\u6a5f\u80fd: {0}"},
+//     "Feature:a {0}"},
+
+
+
+// ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+
+  {
+    ER_PROPERTY,
+     "\u25bc\u30d7\u30ed\u30d1\u30c6\u30a3: {0}"},
+//     "Property:a {0}"},
+
+
+// ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "\u25bcnull \u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u30ea\u30be\u30eb\u30d0"},
+//     "Null entity resolver"},
+
+
+// ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "\u25bcnull DTD \u30cf\u30f3\u30c9\u30e9"},
+//     "Null DTD handler"},
+
+
+// No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "\u25bc\u30c9\u30e9\u30a4\u30d0\u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093!"},
+//     "No Driver Name Specified!"},
+
+
+
+// No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+
+  {
+    ER_NO_URL_SPECIFIED,
+     "\u25bcURL \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093!"},
+//     "No URL Specified!"},
+
+
+
+// Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "\u25bc\u30d7\u30fc\u30eb\u30b5\u30a4\u30ba\u304c 1 \u3088\u308a\u5c0f\u3055\u3044\u5024\u306b\u306a\u3063\u3066\u3044\u307e\u3059!"},
+//     "Pool size is less than 1!"},
+
+
+
+// Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+
+  {
+    ER_INVALID_DRIVER_NAME,
+     "\u25bc\u7121\u52b9\u306a\u30c9\u30e9\u30a4\u30d0\u540d\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059!"},
+//     "Invalid Driver Name Specified!"},
+
+
+
+
+// ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+
+  {
+    ER_ERRORLISTENER,
+     "\u25bc\u30a8\u30e9\u30fc\u30ea\u30b9\u30ca\u30fc"},
+//     "ErrorListener"},
+
+
+
+// Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "\u25bc\u30d7\u30ed\u30b0\u30e9\u30de\u30a8\u30e9\u30fc! \u5f0f\u306b ElemTemplateElement \u306e\u89aa\u304c\u542b\u307e\u308c\u3066\u3044\u307e\u305b\u3093!"},
+//     "Programmer's error! expr has no ElemTemplateElement parent!"},
+
+
+
+// Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "\u25bcRundundentExprEliminator \u306b\u304a\u3051\u308b\u30d7\u30ed\u30b0\u30e9\u30de\u306e\u8868\u660e: {0}"},
+//     "Programmer's assertion in RundundentExprEliminator: {0}"},
+
+
+// Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "\u25bc\u8ef8\u30c8\u30e9\u30d0\u30fc\u30b5\u30eb\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u307e\u305b\u3093: {0}"},
+//     "Axis traverser not supported: {0}"},
+
+
+// ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+
+   {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "\u25bcListingErrorHandler \u306e\u4f5c\u6210\u6642\u306b null PrintWriter \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f!"},
+//     "ListingErrorHandler created with null PrintWriter!"},
+
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "\u25bc\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u3053\u306e\u4f4d\u7f6e\u3067\u306f\u3001{0} \u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093!"},
+//     "{0} is not allowed in this position in the stylesheet!"},
+
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "\u25bc\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u3053\u306e\u4f4d\u7f6e\u3067\u306f\u3001\u7a7a\u767d\u985e\u4ee5\u5916\u306e\u30c6\u30ad\u30b9\u30c8\u306f\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093!"},
+//     "Non-whitespace text is not allowed in this position in the stylesheet!"},
+
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+
+  {
+    INVALID_TCHAR,
+     "\u25bcCHAR \u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a\u5024 {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002CHAR \u578b\u306e\u5c5e\u6027\u306b\u6307\u5b9a\u3067\u304d\u308b\u306e\u306f\u3001\u5358\u4e00\u306e\u6587\u5b57\u3060\u3051\u3067\u3059!"},
+//     "Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!"},
+
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "\u25bc\u30b7\u30b9\u30c6\u30e0 ID \u304c\u4e0d\u660e\u3067\u3059"},
+//     "SystemId Unknown"},
+
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+
+  {
+    ER_LOCATION_UNKNOWN,
+     "\u25bc\u30a8\u30e9\u30fc\u306e\u5834\u6240\u304c\u4e0d\u660e\u3067\u3059"},
+//     "Location of error unknown"},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+
+  {
+    INVALID_QNAME,
+     "\u25bcQNAME \u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a\u5024 {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"},
+//     "Illegal value:a {1} used for QNAME attribute:a {0}"},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+
+  {
+    INVALID_ENUM,
+     "\u25bcENUM \u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a\u5024 {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002\u6709\u52b9\u306a\u5024\u306f {2} \u3067\u3059\u3002"},
+//     "Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}."},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+
+  {
+    INVALID_NMTOKEN,
+     "\u25bcNMTOKEN \u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a\u5024 {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"},
+//     "Illegal value:a {1} used for NMTOKEN attribute:a {0} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+
+  {
+    INVALID_NCNAME,
+     "\u25bcNCNAME \u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"},
+//     "Illegal value:a {1} used for NCNAME attribute:a {0} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+
+  {
+    INVALID_BOOLEAN,
+     "\u25bcboolean \u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"},
+//     "Illegal value:a {1} used for boolean attribute:a {0} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+
+  {
+    INVALID_NUMBER,
+     "\u25bc\u6570\u5b57\u578b\u306e\u5c5e\u6027 {0} \u306b\u4e0d\u6b63\u306a {1} \u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059"},
+//     "Illegal value:a {1} used for number attribute:a {0} "},
+
+
+
+  // End of shared codes...
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+
+  {
+    ER_ARG_LITERAL,
+     "\u25bc\u30de\u30c3\u30c1\u30d1\u30bf\u30fc\u30f3\u5185\u306b\u542b\u307e\u308c\u308b {0} \u306e\u5f15\u6570\u306b\u306f\u3001\u30ea\u30c6\u30e9\u30eb\u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
+//     "Argument to {0} in match pattern must be a literal."},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "\u25bc\u30b0\u30ed\u30fc\u30d0\u30eb\u5909\u6570\u306e\u5ba3\u8a00\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002"},
+//     "Duplicate global variable declaration."},
+
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+
+  {
+    ER_DUPLICATE_VAR,
+     "\u25bc\u5909\u6570\u306e\u5ba3\u8a00\u304c\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002"},
+//     "Duplicate variable declaration."},
+
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "\u25bcxsl:template \u306b\u306f\u3001name \u5c5e\u6027\u3001match \u5c5e\u6027\u306e\u3044\u305a\u308c\u304b\u307e\u305f\u306f\u4e21\u65b9\u304c\u542b\u307e\u308c\u3066\u3044\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
+//     "xsl:template must have a name or match attribute (or both)"},
+
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+
+  {
+    ER_INVALID_PREFIX,
+     "\u25bcexclude-result-prefixes \u306e\u63a5\u982d\u8f9e\u304c\u6709\u52b9\u3067\u306f\u3042\u308a\u307e\u305b\u3093: {0}"},
+//     "Prefix in exclude-result-prefixes is not valid:a {0}"},
+
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+
+  {
+    ER_NO_ATTRIB_SET,
+     "\u25bc{0} \u3068\u3044\u3046\u540d\u524d\u306e attribute-set \u304c\u5b58\u5728\u3057\u307e\u305b\u3093"},
+//     "attribute-set named {0} does not exist"},
+
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "'}' \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u304c\u3001\u5c5e\u6027\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u958b\u304b\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "Found '}' but no attribute template open!"},
+
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "\u8b66\u544a: count \u5c5e\u6027\u304c xsl:number \u5185\u306e\u7956\u5148\u3068\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002 \u30bf\u30fc\u30b2\u30c3\u30c8 = {0}"},
+//      "Warning: count attribute does not match an ancestor in xsl:number! Target = {0}"},
+
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "\u53e4\u3044\u69cb\u6587: 'expr' \u5c5e\u6027\u306e\u540d\u524d\u306f 'select' \u306b\u5909\u66f4\u3055\u308c\u3066\u3044\u307e\u3059\u3002"},
+//      "Old syntax: The name of the 'expr' attribute has been changed to 'select'."},
+
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan \u306f format-number \u95a2\u6570\u5185\u306e\u30ed\u30b1\u30fc\u30eb\u540d\u3092\u307e\u3060\u51e6\u7406\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "Xalan doesn't yet handle the locale name in the format-number function."},
+
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "\u8b66\u544a: xml:lang={0} \u306e\u30ed\u30b1\u30fc\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//      "Warning: Could not find locale for xml:lang={0}"},
+
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "URL \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: {0}"},
+//      "Can not make URL from: {0}"},
+
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "\u8981\u6c42\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u30ed\u30fc\u30c9\u3067\u304d\u307e\u305b\u3093: {0}"},
+//      "Can not load requested doc: {0}"},
+
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "<sort xml:lang={0} \u306e Collator \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//      "Could not find Collator for <sort xml:lang={0}"},
+
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "\u53e4\u3044\u69cb\u6587: \u95a2\u6570\u306e\u6307\u4ee4\u306f {0} \u306e URL \u3092\u4f7f\u7528\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
+//      "Old syntax: the functions instruction should use a url of {0}"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0}\u3001UTF-8 \u3092\u4f7f\u7528"},
+//      "encoding not supported: {0}, using UTF-8"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0\u304c\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0}\u3001Java {1} \u3092\u4f7f\u7528"},
+//      "encoding not supported: {0}, using Java {1}"},
+
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "\u7279\u5b9a\u3067\u3042\u308b\u3079\u304d\u3082\u306e\u306e\u7af6\u5408\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f: {0} \u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3067\u6700\u5f8c\u306b\u898b\u3064\u304b\u3063\u305f\u3082\u306e\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002"},
+//      "Specificity conflicts found: {0} Last found in stylesheet will be used."},
+
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= {0} \u306e\u69cb\u6587\u89e3\u6790\u304a\u3088\u3073\u6e96\u5099  =========="},
+//      "========= Parsing and preparing {0} =========="},
+
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+
+  {
+    WG_ATTR_TEMPLATE, "\u5c5e\u6027\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001{0}"},
+//    WG_ATTR_TEMPLATE, "Attr Template, {0}"},
+
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "xsl:strip-space \u3068 xsl:preserve-space \u306e\u9593\u3067 match \u7af6\u5408\u3057\u307e\u3059"},
+//      "Match conflict between xsl:strip-space and xsl:preserve-space"},
+
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan \u306f\u307e\u3060 {0} \u5c5e\u6027\u3092\u51e6\u7406\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "Xalan does not yet handle the {0} attribute!"},
+
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "10 \u9032\u6570\u5f62\u5f0f\u306e\u5ba3\u8a00\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093: {0}"},
+//      "No declaration found for decimal format: {0}"},
+
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+
+  {
+    WG_OLD_XSLT_NS, "XSLT \u540d\u524d\u7a7a\u9593\u304c\u306a\u3044\u3001\u307e\u305f\u306f\u4e0d\u6b63\u3067\u3059\u3002"},
+//    WG_OLD_XSLT_NS, "Missing or incorrect XSLT Namespace. "},
+
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "\u30c7\u30d5\u30a9\u30eb\u30c8\u306e xsl:decimal-format \u5ba3\u8a00\u306f 1 \u3064\u3060\u3051\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002"},
+//      "Only one default xsl:decimal-format declaration is allowed."},
+
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-format \u306e\u540d\u524d\u306f\u4e00\u610f\u3067\u306a\u304f\u3066\u306f\u306a\u308a\u307e\u305b\u3093\u3002\u540d\u524d \"{0}\" \u306f\u91cd\u8907\u3057\u3066\u3044\u307e\u3059\u3002"},
+//      "xsl:decimal-format names must be unique. Name \"{0}\" has been duplicated."},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} \u306b\u4e0d\u5f53\u306a\u5c5e\u6027\u304c\u3042\u308a\u307e\u3059: {1}"},
+//      "{0} has an illegal attribute: {1}"},
+
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "\u540d\u524d\u7a7a\u9593\u306e\u63a5\u982d\u8f9e\u3092\u89e3\u6c7a\u3067\u304d\u307e\u305b\u3093: {0}\u3002 \u30ce\u30fc\u30c9\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002"},
+//      "Could not resolve namespace prefix: {0}. The node will be ignored."},
+
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet \u306f 'version' \u5c5e\u6027\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+//      "xsl:stylesheet requires a 'version' attribute!"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "\u4e0d\u5f53\u306a\u5c5e\u6027\u540d: {0}"},
+//      "Illegal attribute name: {0}"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "\u5c5e\u6027 {0} \u306b\u4e0d\u5f53\u306a\u5024\u304c\u4f7f\u7528\u3055\u308c\u3066\u3044\u307e\u3059: {1}"},
+//      "Illegal value used for attribute {0}: {1}"},
+
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "document \u95a2\u6570\u306e 2 \u756a\u76ee\u306e\u5f15\u6570\u306e\u7d50\u679c\u306e\u30ce\u30fc\u30c9\u30bb\u30c3\u30c8\u304c\u7a7a\u3067\u3059\u3002\u6700\u521d\u306e\u5f15\u6570\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002"},
+//      "Resulting nodeset from second argument of document function is empty. The first agument will be used."},
+
+
+  // Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "\u25bcxsl:processing-instruction \u306e 'name' \u5c5e\u6027\u3067\u306f\u3001'xml' \u3092\u5024\u3068\u3057\u3066\u6307\u5b9a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
+//      "The value of the 'name' attribute of xsl:processing-instruction name must not be 'xml'"},
+
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "\u25bcxsl:processing-instruction \u306e ''name'' \u5c5e\u6027\u306b\u306f\u3001\u6709\u52b9\u306a NCName \u5024 {0} \u3092\u6307\u5b9a\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059"},
+//      "The value of the 'name' attribute of xsl:processing-instruction must be a valid NCName:a {0}"},
+
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "\u25bc\u5b50\u30ce\u30fc\u30c9\u306e\u751f\u6210\u5f8c\u3084\u8981\u7d20\u306e\u751f\u6210\u524d\u306b\u5c5e\u6027 {0} \u3092\u8981\u7d20\u306b\u8ffd\u52a0\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093\u3002\u305d\u306e\u5c5e\u6027\u306f\u7121\u8996\u3055\u308c\u307e\u3059\u3002"},
+//      "Cannot add attribute {0} after child nodes or before an element is produced.  Attribute will be ignored."},
+
+
+    // WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "ja"},
+  { "help_language", "ja"},
+  { "language", "ja"},
+    { "BAD_CODE",
+      "createMessage \u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u7bc4\u56f2\u5916\u3067\u3057\u305f"},
+    { "FORMAT_FAILED",
+      "messageFormat \u547c\u3073\u51fa\u3057\u3067\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f"},
+    { "version", ">>>>>>> Xalan \u30d0\u30fc\u30b8\u30e7\u30f3 "},
+    { "version2", "<<<<<<<"},
+    { "yes", "\u306f\u3044"},
+    { "line", "\u884c\u756a\u53f7"},
+    { "column", "\u5217\u756a\u53f7"},
+    { "xsldone", "XSLProcessor: \u7d42\u4e86"},
+    { "xslProc_option",
+    "Xalan-J \u30b3\u30de\u30f3\u30c9\u884c\u30d7\u30ed\u30bb\u30b9\u306e\u30af\u30e9\u30b9\u30aa\u30d7\u30b7\u30e7\u30f3:"},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT", "   [-OUT outputFileName]"},
+    { "optionLXCIN",
+      "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT",
+      "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER",
+      "   [-PARSER \u306f parser liaison \u306e\u30af\u30e9\u30b9\u540d\u3092\u5b8c\u5168\u4fee\u98fe\u3059\u308b]"},
+    { "optionE",
+    "   [-E (\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u53c2\u7167\u3092\u62e1\u5f35\u3057\u306a\u3044)]"},
+    { "optionV",
+    "   [-E (\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u53c2\u7167\u3092\u62e1\u5f35\u3057\u306a\u3044)]"},
+    { "optionQC", "   [-QC (Quiet Pattern Conflicts Warnings)]"},
+    { "optionQ", "   [-Q  (\u975e\u51fa\u529b\u30e2\u30fc\u30c9)]"},
+    { "optionLF",
+      "   [-LF (\u51fa\u529b\u306b\u306e\u307f\u6539\u884c\u3092\u4f7f\u7528\u3059\u308b {\u30c7\u30d5\u30a9\u30eb\u30c8\u306f CR/LF})]"},
+    { "optionCR",
+      "   [-CR (\u51fa\u529b\u306b\u306e\u307f\u30ad\u30e3\u30ea\u30c3\u30b8\u30ea\u30bf\u30fc\u30f3\u3092\u4f7f\u7528\u3059\u308b {\u30c7\u30d5\u30a9\u30eb\u30c8\u306f CR/LF})]"},
+    { "optionESCAPE",
+      "   [-ESCAPE (\u30a8\u30b9\u30b1\u30fc\u30d7\u3059\u308b\u6587\u5b57\u5217 {\u30c7\u30d5\u30a9\u30eb\u30c8\u306f <>&\"\'\\r\\n}]"},
+    { "optionINDENT",
+      "   [-INDENT (\u30a4\u30f3\u30c7\u30f3\u30c8\u306b\u8a2d\u5b9a\u3059\u308b\u7a7a\u767d\u6587\u5b57\u6570\u3092\u5236\u5fa1\u3059\u308b {\u30c7\u30d5\u30a9\u30eb\u30c8\u306f 0})]"},
+    { "optionTT",
+      "   [-TT (\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u547c\u3073\u51fa\u3055\u308c\u305f\u3068\u304d\u306b\u30c8\u30ec\u30fc\u30b9\u3059\u308b)]"},
+    { "optionTG",
+      "   [-TG (\u5404\u751f\u6210\u30a4\u30d9\u30f3\u30c8\u3092\u30c8\u30ec\u30fc\u30b9\u3059\u308b\u3002)]"},
+    { "optionTS",
+    "   [-TS (\u5404\u9078\u629e\u30a4\u30d9\u30f3\u30c8\u3092\u30c8\u30ec\u30fc\u30b9\u3059\u308b\u3002)]"},
+    { "optionTTC",
+      "   [-TTC (\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5b50\u304c\u51e6\u7406\u3055\u308c\u305f\u3068\u304d\u306b\u30c8\u30ec\u30fc\u30b9\u3059\u308b\u3002)]"},
+    { "optionTCLASS",
+      "   [-TCLASS (\u30c8\u30ec\u30fc\u30b9\u62e1\u5f35\u7528\u306e TraceListener \u30af\u30e9\u30b9\u3002)]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE (\u59a5\u5f53\u6027\u691c\u67fb\u3092\u6709\u52b9\u306b\u3059\u308b\u304b\u3069\u3046\u304b\u3092\u8a2d\u5b9a\u3059\u308b\u3002\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u306f\u7121\u52b9\u3002)]"},
+    { "optionEDUMP",
+      "   [-EDUMP {\u30aa\u30d7\u30b7\u30e7\u30f3\u306e\u30d5\u30a1\u30a4\u30eb\u540d} (\u30a8\u30e9\u30fc\u767a\u751f\u6642\u306b\u30b9\u30bf\u30c3\u30af\u30c0\u30f3\u30d7\u3092\u5b9f\u884c\u3059\u308b\u3002)]"},
+    { "optionXML",
+      "   [-XML (XML \u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u3092\u4f7f\u7528\u3057\u3066\u3001XML \u30d8\u30c3\u30c0\u3092\u8ffd\u52a0\u3059\u308b\u3002)]"},
+    { "optionTEXT",
+      "   [-TEXT (\u5358\u7d14\u306a Text \u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3002)]"},
+    { "optionHTML",
+    "   [-HTML (HTML \u30d5\u30a9\u30fc\u30de\u30c3\u30bf\u3092\u4f7f\u7528\u3059\u308b\u3002)]"},
+    { "optionPARAM",
+      "   [-PARAM \u540d\u524d\u5f0f (\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a)]"},
+    { "noParsermsg1",
+    "XSL \u30d7\u30ed\u30bb\u30b9\u306f\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+    { "noParsermsg2",
+    "** \u30d1\u30fc\u30b5\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f **"},
+    { "noParsermsg3",
+    "\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
+    { "noParsermsg4",
+      "Java \u7528\u306b IBM \u306e XML \u30d1\u30fc\u30b5\u304c\u306a\u3044\u5834\u5408\u3001\u4ee5\u4e0b\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059"},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+    { "optionURIRESOLVER",
+    "   [-URIRESOLVER \u30d5\u30eb\u30af\u30e9\u30b9\u540d (URI \u3092\u89e3\u6c7a\u3059\u308b\u5834\u5408\u306f URIResolver \u3092\u4f7f\u7528\u3059\u308b)]"},
+    { "optionENTITYRESOLVER",
+    "   [-ENTITYRESOLVER \u30d5\u30eb\u30af\u30e9\u30b9\u540d (\u30a8\u30f3\u30c6\u30a3\u30c6\u30a3\u3092\u89e3\u6c7a\u3059\u308b\u5834\u5408\u306f EntityResolver \u3092\u4f7f\u7528\u3059\u308b)]"},
+    { "optionCONTENTHANDLER",
+    "   [-CONTENTHANDLER \u30d5\u30eb\u30af\u30e9\u30b9\u540d (\u51fa\u529b\u3092\u76f4\u5217\u5316\u3059\u308b\u5834\u5408\u306f ContentHandler \u3092\u4f7f\u7528\u3059\u308b)]"},
+    { "optionLINENUMBERS",
+    "   [-L \u30bd\u30fc\u30b9\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u306f\u884c\u756a\u53f7\u3092\u4f7f\u7528\u3059\u308b]"},
+		
+    // Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+    " \u25bc[-MEDIA mediaType (media \u5c5e\u6027\u3092\u4f7f\u7528\u3057\u3066\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u95a2\u9023\u4ed8\u3051\u3089\u308c\u305f\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3092\u691c\u7d22\u3059\u308b\u3002)]"},
+    { "optionFLAVOR",
+    " \u25bc[-FLAVOR flavorName (s2s=SAX \u307e\u305f\u306f d2d=DOM \u3092\u660e\u793a\u7684\u306b\u4f7f\u7528\u3057\u3066\u30c8\u30e9\u30f3\u30b9\u30d5\u30a9\u30fc\u30e0\u3092\u5b9f\u884c\u3059\u308b\u3002)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+    " \u25bc[-DIAG (\u30c8\u30e9\u30f3\u30b9\u30d5\u30a9\u30fc\u30e0\u306b\u304b\u304b\u3063\u305f\u5408\u8a08\u6642\u9593 (\u30df\u30ea\u79d2) \u3092\u51fa\u529b\u3059\u308b\u3002)]"},
+    { "optionINCREMENTAL",
+    " \u25bc[-INCREMENTAL (http://xml.apache.org/xalan/features/incremental \u3092 true \u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30a4\u30f3\u30af\u30ea\u30e1\u30f3\u30bf\u30eb\u306a DTM \u69cb\u7bc9\u3092\u8981\u6c42\u3059\u308b\u3002)]"},
+    { "optionNOOPTIMIMIZE",
+    " \u25bc[-NOOPTIMIMIZE (http://xml.apache.org/xalan/features/optimize \u3092 false \u306b\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u3001\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u6700\u9069\u5316\u51e6\u7406\u3092\u7121\u52b9\u306b\u3059\u308b\u3002)]"},
+    { "optionRL",
+    " \u25bc[-RL recursionlimit (\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u306e\u56de\u5e30\u306e\u6df1\u3055\u306b\u4e0a\u9650\u5024\u3092\u8a2d\u5b9a\u3059\u308b\u3002)]"},
+    { "optionXO",
+    " \u25bc[-XO [transletName] (\u751f\u6210\u3055\u308c\u305f\u30c8\u30e9\u30f3\u30b9\u30ec\u30c3\u30c8\u306e\u540d\u524d\u3092\u6307\u5b9a\u3059\u308b)]"},
+    { "optionXD",
+    " \u25bc[-XD destinationDirectory (\u30c8\u30e9\u30f3\u30b9\u30ec\u30c3\u30c8\u306e\u51fa\u529b\u5148\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u6307\u5b9a\u3059\u308b)]"},
+    { "optionXJ",
+    " \u25bc[-XJ jarfile (\u30c8\u30e9\u30f3\u30b9\u30ec\u30c3\u30c8\u306e\u30af\u30e9\u30b9\u3092 <jarfile> \u306b\u6307\u5b9a\u3055\u308c\u305f\u540d\u524d\u306e JAR \u30d5\u30a1\u30a4\u30eb\u306b\u30d1\u30c3\u30b1\u30fc\u30b8\u5316\u3059\u308b)]"},
+    { "optionXP",
+    " \u25bc[-XP package (\u751f\u6210\u3055\u308c\u305f\u3059\u3079\u3066\u306e\u30c8\u30e9\u30f3\u30b9\u30ec\u30c3\u30c8\u30af\u30e9\u30b9\u306b\u5bfe\u3059\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u540d\u306e\u63a5\u982d\u8f9e\u3092\u6307\u5b9a\u3059\u308b)]"}
+
+
+
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#error";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "Error: ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "Warning: ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_ko.java b/src/org/apache/xalan/res/XSLTErrorResources_ko.java
new file mode 100644
index 0000000..968c0eb
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_ko.java
@@ -0,0 +1,2852 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+public class XSLTErrorResources_ko extends XSLTErrorResources
+{
+
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;
+
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+
+  {
+    ER_NO_CURLYBRACE,
+      "\uc624\ub958: \ud45c\ud604\uc2dd \uc548\uc5d0 '{'\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0}\uc5d0 \uc798\ubabb\ub41c \uc18d\uc131 {1}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "sourceNode\ub294 xsl:apply-imports\uc5d0\uc11c \ub110\uc785\ub2c8\ub2e4!"},
+
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+
+  {
+    ER_CANNOT_ADD, "{0}\uc744(\ub97c) {1}\uc5d0 \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
+
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "sourceNode\ub294 handleApplyTemplatesInstruction\uc5d0\uc11c \ub110\uc785\ub2c8\ub2e4!"},
+
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+
+  {
+    ER_NO_NAME_ATTRIB, "{0}\uc5d0 \uc774\ub984 \uc18d\uc131\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "\ud15c\ud50c\ub9ac\ud2b8 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "xsl:call-template\uc5d0\uc11c \uc774\ub984 AVT\ub97c \uacb0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+
+  {
+    ER_REQUIRES_ATTRIB, "{0}\uc5d0 \uc18d\uc131 {1}\uc774(\uac00) \ud544\uc694\ud569\ub2c8\ub2e4."},
+
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0}\uc5d0 ''test'' \uc18d\uc131\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "\ub808\ubca8 \uc18d\uc131 {0}\uc5d0 \uc798\ubabb\ub41c \uac12\uc774 \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "processing-instruction \uc774\ub984\uc774 'xml'\uc774\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "processing-instruction \uc774\ub984\uc740 \uc62c\ubc14\ub978 NCName {0}\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0}\uc774(\uac00) \ubaa8\ub4dc\ub97c \uac00\uc9c0\uace0 \uc788\ub294 \uacbd\uc6b0 \uc77c\uce58 \uc18d\uc131\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0}\uc5d0 \uc774\ub984 \ub610\ub294 \uc77c\uce58 \uc18d\uc131 \uc911 \ud558\ub098\uac00 \ud544\uc694\ud569\ub2c8\ub2e4."},
+
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "\uc774\ub984 \uacf5\uac04 \uc811\ub450\uc5b4 {0}\uc744(\ub97c) \uacb0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space\uc5d0 \uc798\ubabb\ub41c \uac12 {0}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+
+  {
+    ER_NO_OWNERDOC,
+      "\uc790\uc2dd \ub178\ub4dc\uc5d0 \uc18c\uc720\uc790 \ubb38\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "ElemTemplateElement \uc624\ub958: {0}"},
+
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+
+  {
+    ER_NULL_CHILD, "\ub110 \uc790\uc2dd\uc744 \ucd94\uac00\ud558\ub824\uace0 \uc2dc\ub3c4\ud558\ub294 \uc911\uc785\ub2c8\ub2e4!"},
+
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0}\uc5d0 \uc120\ud0dd \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4."},
+
+
+  /** ER_NEED_TEST_ATTRIB          */
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when\uc5d0 'test' \uc18d\uc131\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param\uc5d0 'name' \uc18d\uc131\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "\ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc18c\uc720\uc790 \ubb38\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "XML TransformerFactory Liaison {0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: \ud504\ub85c\uc138\uc2a4\uc5d0 \uc131\uacf5\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan:\uc5d0 \uc131\uacf5\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "\ucf54\ub4dc\ud654\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "TraceListener {0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key\uc5d0 'name' \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key\uc5d0 'match' \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key\uc5d0 'use' \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0}\uc5d0 ''elements'' \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} \uc18d\uc131 ''prefix''\uac00 \ube60\uc84c\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+
+  {
+    ER_BAD_STYLESHEET_URL, "Stylesheet URL\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+
+  {
+    ER_FILE_NOT_FOUND, "Stylesheet \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+
+  {
+    ER_IOEXCEPTION,
+      "\uc2a4\ud0c0\uc77c \uc2dc\ud2b8 \ud30c\uc77c\ub85c IO \uc608\uc678\uac00 \ubc1c\uc0dd\ud558\uc600\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) {0}\uc5d0 \ub300\ud55c href \uc18d\uc131\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0}\uc774(\uac00) \uc9c1\uc811 \ub610\ub294 \uac04\uc811\uc801\uc73c\ub85c \uc790\uc2e0\uc744 \ud3ec\ud568\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude \uc624\ub958, {0}"},
+
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} \uc18d\uc131 ''lang''\uc774 \ube60\uc84c\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) {0} \uc694\uc18c\uc758 \uc704\uce58\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4?? container \uc694\uc18c ''component''\uac00 \ube60\uc84c\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "Element, DocumentFragment, Document \ub610\ub294 PrintWriter\ub85c\ub9cc \ucd9c\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+
+  {
+    ER_PROCESS_ERROR, "StylesheetRoot.process \uc624\ub958"},
+
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+
+  {
+    ER_UNIMPLNODE_ERROR, "UnImplNode \uc624\ub958: {0}"},
+
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "\uc624\ub958! xpath \uc120\ud0dd \ud45c\ud604\uc2dd(-select)\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "XSLProcessor\ub97c \uc77c\ub828\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "Stylesheet \uc785\ub825\uc744 \uc9c0\uc815\ud558\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "stylesheet \ucc98\ub9ac\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+
+  {
+    ER_COULDNT_PARSE_DOC, "{0} \ubb38\uc11c\ub97c \uad6c\ubb38 \ubd84\uc11d\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "\ub2e8\ud3b8 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "\ub2e8\ud3b8 \uc2dd\ubcc4\uc790\uc5d0 \uc758\ud574 \uc9c0\uc815\ub41c \ub178\ub4dc\ub294 \uc694\uc18c\uac00 \uc544\ub2d9\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each\uc5d0 \uc77c\uce58 \ub610\ub294 \uc774\ub984 \uc18d\uc131 \uc911 \ud558\ub098\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "\ud15c\ud50c\ub9ac\ud2b8\uc5d0 \uc77c\uce58 \ub610\ub294 \uc774\ub984 \uc18d\uc131 \uc911 \ud558\ub098\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "\ubb38\uc11c \ub2e8\ud3b8 \ubcf5\uc81c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "\uacb0\uacfc \ud2b8\ub9ac {0}\uc5d0 \ud56d\ubaa9\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "\uc18c\uc2a4 XML\uc758 xml:space\uc5d0 \uc798\ubabb\ub41c \uac12 {0}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "{0}\uc5d0 \ub300\ud558\uc5ec xsl:key \uc120\uc5b8\uc774 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+
+  {
+    ER_CANT_CREATE_URL, "\uc624\ub958! {0}\uc5d0 \ub300\ud558\uc5ec url\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+
+  {
+    ER_PROCESSOR_ERROR, "XSLT TransformerFactory \uc624\ub958"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0}\uc740(\ub294) \uc2a4\ud0c0\uc77c \uc2dc\ud2b8 \ub0b4\ubd80\uc5d0 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "result-ns\ub294 \ub354 \uc774\uc0c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! \ub300\uc2e0 xsl:output\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624."},
+
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "default-space\ub294 \ub354 \uc774\uc0c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! \ub300\uc2e0 xsl:preserve-space\ub97c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624."},
+
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result\ub294 \ub354 \uc774\uc0c1 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! \ub300\uc2e0 xsl:output\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624."},
+
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0}\uc5d0 \uc798\ubabb\ub41c \uc18d\uc131 {1}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "\uc54c \uc218 \uc5c6\ub294 XSL \uc694\uc18c {0}"},
+
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort\ub294 xsl:apply-templates \ub610\ub294 xsl:for-each\uc640\ub9cc \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) xsl:when\uc758 \uc704\uce58\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when\uc758 \ubd80\ubaa8\ub294 xsl:choose\uac00 \uc544\ub2d9\ub2c8\ub2e4!"},
+
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) xsl:otherwise\uc758 \uc704\uce58\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise\uc758 \ubd80\ubaa8\ub294 xsl:choose\uac00 \uc544\ub2d9\ub2c8\ub2e4!"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0}\uc740(\ub294) \ud15c\ud50c\ub9ac\ud2b8 \ub0b4\ubd80\uc5d0 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} \ud655\uc7a5 \uc774\ub984 \uacf5\uac04 \uc811\ub450\uc5b4 {1}\uc744(\ub97c) \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) \uac00\uc838\uc624\uae30\ub294 \uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uc758 \uccab \ubc88\uc9f8 \uc694\uc18c\ub85c\ub9cc \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0}\uc774(\uac00) \uc9c1\uc811 \ub610\ub294 \uac04\uc811\uc801\uc73c\ub85c \uc790\uc2e0\uc744 \uac00\uc838\uc624\uace0 \uc788\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space\uc5d0 \uc798\ubabb\ub41c \uac12 {0}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet\uac00 \uc131\uacf5\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+
+  {
+    ER_SAX_EXCEPTION, "SAX \uc608\uc678"},
+
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "\uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+
+  {
+    ER_XSLT_ERROR, "XSLT \uc624\ub958"},
+
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "\ud615\uc2dd \ud328\ud134 \ubb38\uc790\uc5f4\uc5d0 \ud1b5\ud654 \ubd80\ud638\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "Stylesheet DOM\uc5d0\uc11c \ubb38\uc11c \uae30\ub2a5\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "\uc811\ub450\uc5b4\uac00 \uc5c6\ub294 \uacb0\uc815\uc790\uc758 \uc811\ub450\uc5b4\ub97c \uacb0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Redirect \ud655\uc7a5: \ud30c\uc77c \uc774\ub984\uc744 \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 - \ud30c\uc77c \ub610\ub294 \uc120\ud0dd \uc18d\uc131\uc774 \uc62c\ubc14\ub978 \ubb38\uc790\uc5f4\uc744 \ubc18\ud658\ud574\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "Redirect \ud655\uc7a5\uc5d0 FormatterListener\ub97c \uad6c\ucd95\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "exclude-result-prefixes\uc758 \uc811\ub450\uc5b4\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+
+  {
+    ER_MISSING_NS_URI,
+      "\uc9c0\uc815\ub41c \uc811\ub450\uc5b4\uc5d0 \ub300\ud55c \uc774\ub984 \uacf5\uac04 URI\uac00 \ube60\uc84c\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "\uc635\uc158 {0}\uc5d0 \ub300\ud55c \uc778\uc790\uac00 \ube60\uc84c\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+
+  {
+    ER_INVALID_OPTION, "\uc798\ubabb\ub41c \uc635\uc158: {0}"},
+
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "\uc798\ubabb\ub41c \ud615\uc2dd \ubb38\uc790\uc5f4: {0}"},
+
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet\uc5d0 'version' \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "\uc18d\uc131: {0}\uc5d0 \uc798\ubabb\ub41c \uac12 {1}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose\uc5d0 xsl:when\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.   "},
+
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports\ub294 xsl:for-each\uc5d0 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "\ucd9c\ub825 DOM \ub178\ub4dc\ub85c DTMLiaison\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4... \ub300\uc2e0 org.apache.xpath.DOM2Helper\ub97c \uc804\ub2ec\ud558\uc2ed\uc2dc\uc624!"},
+
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "\uc785\ub825 DOM \ub178\ub4dc\ub85c DTMLiaison\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4... \ub300\uc2e0 org.apache.xpath.DOM2Helper\ub97c \uc804\ub2ec\ud558\uc2ed\uc2dc\uc624!"},
+
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "\ud655\uc7a5 \uc694\uc18c\uc5d0 \ub300\ud55c \ud638\ucd9c\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\uc811\ub450\uc5b4\uac00 \uc774\ub984 \uacf5\uac04 {0}\uc73c\ub85c(\ub85c) \uacb0\uc815\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\uc798\ubabb\ub41c UTF-16 \ub300\ub9ac\uac00 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4: {0} ?"},
+
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0}\uc774(\uac00) \uc790\uc2e0\uc744 \uc0ac\uc6a9\ud558\uc600\uba70, \uc774\ub85c \uc778\ud574 \ubb34\ud55c \ub8e8\ud504\uac00 \ubc1c\uc0dd\ud569\ub2c8\ub2e4."},
+
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "Xerces-DOM\uc774 \uc544\ub2cc \uc785\ub825\uacfc Xerces-DOM \ucd9c\ub825\uc744 \ud568\uaed8 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "ElemTemplateElement.readObject\uc5d0: {0}"},
+
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "\uac19\uc740 \uc774\ub984 {0}\uc744(\ub97c) \uac00\uc9c4 \ub458 \uc774\uc0c1\uc758 \ud15c\ud50c\ub9ac\ud2b8\ub97c \ucc3e\uc558\uc2b5\ub2c8\ub2e4."},
+
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+
+  {
+    ER_INVALID_KEY_CALL,
+      "\uc798\ubabb\ub41c \ud568\uc218 \ud638\ucd9c: \uc21c\ud658\uc801 key() \ud638\ucd9c\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+
+  {
+    ER_REFERENCING_ITSELF,
+      "{0} \ubcc0\uc218\uac00 \uc9c1\uc811 \ub610\ub294 \uac04\uc811\uc801\uc73c\ub85c \uc790\uc2e0\uc744 \ucc38\uc870\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4!"},
+
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "newTemplates\uc758 DOMSource\uc5d0\uc11c \uc785\ub825 \ub178\ub4dc\uac00 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"\uc635\uc158 {0}\uc758 \ud074\ub798\uc2a4 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.    "},
+
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"\ud544\uc218 \uc694\uc18c\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
+
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream\uc740 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI\ub294 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"\ud30c\uc77c\uc740 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource\ub294 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"\uacb9\uccd0\uc4f8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"BSF \uad00\ub9ac\uc790\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"\ud655\uc7a5\uc790\ub97c \ucef4\ud30c\uc77c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "{1}\ub85c \uc778\ud574 \ud655\uc7a5\uc790 {0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "\uba54\uc18c\ub4dc {0}\uc5d0 \ub300\ud55c \uc778\uc2a4\ud134\uc2a4 \uba54\uc18c\ub4dc \ud638\ucd9c\uc5d0\uc11c \uac1d\uccb4 \uc778\uc2a4\ud134\uc2a4\uac00 \uccab \ubc88\uc9f8 \uc778\uc790\uac00 \ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "\uc798\ubabb\ub41c \uc774\ub984 \uc694\uc18c {0}\uc774(\uac00) \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.   "},
+
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "\uc774\ub984 \uc694\uc18c \uba54\uc18c\ub4dc\ub294 \uc815\uc801 {0}\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "\ud655\uc7a5 \uae30\ub2a5 {0} : {1}\uc744(\ub97c) \uc54c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "{0}\uc758 \uad6c\uc131\uc790\uc640 \uc77c\uce58\ud558\ub294 \uac83\uc774 \ub450 \uac1c \uc774\uc0c1\uc785\ub2c8\ub2e4.   "},
+
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "{0} \uba54\uc18c\ub4dc\uc640 \uc77c\uce58\ud558\ub294 \uac83\uc774 \ub450 \uac1c \uc774\uc0c1\uc785\ub2c8\ub2e4"},
+
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "{0} \uc694\uc18c \uba54\uc18c\ub4dc\uc640 \uc77c\uce58\ud558\ub294 \uac83\uc774 \ub450 \uac1c \uc774\uc0c1\uc785\ub2c8\ub2e4"},
+
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "{0} \ud3c9\uac00\ub97c \uc704\ud574 \uc804\ub2ec\ub41c \ucee8\ud14d\uc2a4\ud2b8\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+
+  {
+    ER_POOL_EXISTS,
+             "\ud480\uc774 \uc774\ubbf8 \uc788\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+
+  {
+    ER_NO_DRIVER_NAME,
+             "\uc9c0\uc815\ub41c \ub4dc\ub77c\uc774\ubc84 \uc774\ub984\uc774 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+
+  {
+    ER_NO_URL,
+             "\uc9c0\uc815\ub41c URL\uc774 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "\ud480 \ud06c\uae30\uac00 1\ubcf4\ub2e4 \uc791\uc2b5\ub2c8\ub2e4!"},
+
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+
+  {
+    ER_INVALID_DRIVER,
+             "\uc9c0\uc815\ub41c \ub4dc\ub77c\uc774\ubc84 \uc774\ub984\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"},
+
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "\uc2a4\ud0c0\uc77c \uc2dc\ud2b8 \ub8e8\ud2b8\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "xml:space\uc5d0 \ub300\ud55c \uac12\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "processFromNode\uac00 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "[ {0} ] \uc790\uc6d0\uc774 \ub2e4\uc74c\uc744 \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {1} \n {2} \t {3}"},
+
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "\ubc84\ud37c \ud06c\uae30 <=0"},
+
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "\ud655\uc7a5\uc790 \ud638\ucd9c \uc911 \uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "{0} \uc811\ub450\uc5b4\uc5d0 \uad00\ub828 \uc774\ub984 \uacf5\uac04 \uc120\uc5b8\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "lang=javaclass {0}\uc5d0 \uc694\uc18c \ucee8\ud150\ud2b8\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+     
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "\uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uac00 \uc885\ub8cc\ub85c \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+
+  {
+    ER_ONE_OR_TWO,
+        "1 \ub610\ub294 2"},
+
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+
+  {
+    ER_TWO_OR_THREE,
+        "2 or 3"},
+
+  
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "\uae30\ubcf8\uac12\ub9cc\uc744 \uc0ac\uc6a9\ud558\uc5ec {0}\uc744(\ub97c) \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4(CLASSPATH\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624)."},
+
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "\uae30\ubcf8 \ud15c\ud50c\ub9ac\ud2b8\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+
+  {
+    ER_RESULT_NULL,
+        "\uacb0\uacfc\ub294 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "\uacb0\uacfc\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "\uc9c0\uc815\ub41c \ucd9c\ub825\uc774 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "\uc720\ud615\uc774 {0}\uc778 \uacb0\uacfc\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "\uc720\ud615\uc774 {0}\uc778 \uc18c\uc2a4\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
+
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "\ucee8\ud150\ud2b8 \ucc98\ub9ac\uae30\uac00 \ub110\uc785\ub2c8\ub2e4"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "\uc624\ub958 \ucc98\ub9ac\uae30\uac00 \ub110\uc785\ub2c8\ub2e4"},
+
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "ContentHandler\ub97c \uc124\uc815\ud558\uc9c0 \uc54a\uc73c\uba74 \uad6c\ubb38 \ubd84\uc11d\uc774 \ud638\ucd9c\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "\ud544\ud130\uc5d0 \ub300\ud55c \ubd80\ubaa8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "{0}\uc5d0 \uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. \ub9e4\uccb4= {1}"},
+
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "{0}\uc5d0 xml-stylesheet PI\uac00 \uc5c6\uc2b5\ub2c8\ub2e4. "},
+
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "\uae30\ubcf8 \uad6c\ud604\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0})\ub294 \ud604\uc7ac \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "\uc624\ud504\uc14b\uc774 \uc2ac\ub86f\ubcf4\ub2e4 \ud07d\ub2c8\ub2e4"},
+
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "Coroutine\uc740 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4, ID={0}"},
+
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager\uac00 co_exit() \uc694\uccad\uc744 \uc218\uc2e0\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet()\uc774 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+
+  {
+    ER_COROUTINE_PARAM,
+       "Coroutine \ub9e4\uac1c\ubcc0\uc218 \uc624\ub958({0})"},
+
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\n\uc608\uc0c1\uce58 \ubabb\ud55c \ubb38\uc81c: doTerminate \uad6c\ubb38 \ubd84\uc11d\uae30\uac00 {0}\uc5d0 \uc751\ub2f5\ud588\uc2b5\ub2c8\ub2e4. "},
+
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "\uad6c\ubb38 \ubd84\uc11d\ud558\ub294 \ub3d9\uc548\uc5d0\ub294 \uad6c\ubb38 \ubd84\uc11d\uc744 \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\uc624\ub958: {0} \ucd95\uc5d0 \ub300\ud574 \uc785\ub825\ub41c \ubc18\ubcf5\uae30\uac00 \uad6c\ud604\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\uc624\ub958: {0} \ucd95\uc5d0 \ub300\ud55c \ubc18\ubcf5\uae30\uac00 \uad6c\ud604\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. "},
+
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "\ubc18\ubcf5\uae30 \ubcf5\uc81c\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "\uc54c \uc218 \uc5c6\ub294 \ucd95 \uc21c\ud68c \uc720\ud615: {0}"},
+
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "\ucd95 \uc21c\ud68c\uae30\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}"},
+
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "\ub354 \uc774\uc0c1 DTM ID\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+
+  {
+    ER_NOT_SUPPORTED,
+       "\uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}"},
+
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+
+  {
+    ER_NODE_NON_NULL,
+       "\ub178\ub4dc\ub294 getDTMHandleFromNode\uc5d0 \ub300\ud574 \ub110\uc774 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4"},
+
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "\ub178\ub4dc\ub97c \ud578\ub4e4\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "startParse\ub294 \uad6c\ubb38 \ubd84\uc11d \uc911\uc5d0 \ud638\ucd9c\ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse\uc5d0\ub294 \ub110\uc774 \uc544\ub2cc SAXParser\uac00 \ud544\uc694\ud569\ub2c8\ub2e4"},
+
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "\ub2e4\uc74c\uc73c\ub85c \uad6c\ubb38 \ubd84\uc11d\uae30\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: "},
+
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "{0} \ud2b9\uc131\uc5d0 \ub300\ud55c \uac12\uc774 \ubd80\uc6b8 \uc778\uc2a4\ud134\uc2a4\uc5ec\uc57c \ud569\ub2c8\ub2e4."},
+
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "\ud480\uc5d0 \ub300\ud55c \uc0c8 \uc778\uc2a4\ud134\uc2a4 \uc791\uc131 \uc911 \uc608\uc678\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "\uacbd\ub85c\uc5d0 \uc798\ubabb\ub41c \uc81c\uc5b4 \ubb38\uc790\uc5f4\uc774 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+
+  {
+    ER_SCHEME_REQUIRED,
+       "\uccb4\uacc4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "URI\uc5d0  \uccb4\uacc4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+
+  {
+    ER_NO_SCHEME_INURI,
+       "URI\uc5d0 \uccb4\uacc4\uac00 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "\uacbd\ub85c\uc5d0 \uc798\ubabb\ub41c \ubb38\uc790 {0}\uc774(\uac00) \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4."},
+
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "\ub110 \ubb38\uc790\uc5f4\uc5d0\uc11c \uccb4\uacc4\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "\uccb4\uacc4\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "\ud638\uc2a4\ud2b8 \uc8fc\uc18c\uac00 \uc62c\ubc14\ub978 \ud615\uc2dd\uc774 \uc544\ub2d9\ub2c8\ub2e4"},
+
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "\ud638\uc2a4\ud2b8\uac00 \ub110\uc774\uba74 \ud3ec\ud2b8\ub97c \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+
+  {
+    ER_INVALID_PORT,
+       "\uc798\ubabb\ub41c \ud3ec\ud2b8 \ubc88\ud638\uc785\ub2c8\ub2e4"},
+
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "\ub2e8\ud3b8\uc740 \uc77c\ubc18 URI\uc5d0 \ub300\ud574\uc11c\ub9cc \uc124\uc815\ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "\uacbd\ub85c\uac00 \ub110\uc774\uba74 \ub2e8\ud3b8\uc744 \uc124\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "\ub2e8\ud3b8\uc5d0 \uc798\ubabb\ub41c \ubb38\uc790\uac00 \ud3ec\ud568\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4"},
+
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+
+  {
+    ER_PARSER_IN_USE,
+        "\uad6c\ubb38 \ubd84\uc11d\uae30\uac00 \uc774\ubbf8 \uc0ac\uc6a9 \uc911\uc785\ub2c8\ub2e4"},
+
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "\uad6c\ubb38 \ubd84\uc11d \uc911\uc5d0\ub294 {0} {1}\uc744(\ub97c) \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "\uc790\uccb4 \uc6d0\uc778 \uc81c\uacf5\uc740 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4"},
+
+  
+    /* This key/message changed ,NEED ER_COULD_NOT_FIND_EXTERN_SCRIPT: Pending,Ramesh */
+
+   /** src attribute not yet supported for  */
+  //public static final int ER_SRC_ATTRIB_NOT_SUPPORTED = 195;
+
+
+  {
+    "ER_SRC_ATTRIB_NOT_SUPPORTED",
+       "{0}\uc5d0\uc11c \uc678\ubd80 \uc2a4\ud06c\ub9bd\ud2b8\ub97c \uc5bb\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "[ {0} ] \uc790\uc6d0\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\n {1}"},
+
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "\ucd9c\ub825 \ud2b9\uc131\uc744 \uc778\uc2dd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
+
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "\ud638\uc2a4\ud2b8\uac00 \uc9c0\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\uba74 Userinfo\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "\ud638\uc2a4\ud2b8\uac00 \uc9c0\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc73c\uba74 \ud3ec\ud2b8\ub97c \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "\uc9c8\uc758 \ubb38\uc790\uc5f4\uc744 \uacbd\ub85c \ub610\ub294 \uc9c8\uc758 \ubb38\uc790\uc5f4 \ub0b4\uc5d0 \uc9c0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "\ub2e8\ud3b8\uc744 \uacbd\ub85c\uc640 \ub2e8\ud3b8 \ubaa8\ub450\uc5d0 \uc9c0\uc815\ud560 \uc218\ub294 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "\ube48 \ub9e4\uac1c\ubcc0\uc218\ub85c\ub294 URI\ub97c \ucd08\uae30\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "ElemLiteralResult \uc778\uc2a4\ud134\uc2a4 \uc791\uc131\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4"},
+    
+  
+  // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. - nb.
+
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "{0}\uc5d0 \ub300\ud55c \uac12\uc740 \uad6c\ubd84 \ubd84\uc11d\ud560 \uc218 \uc788\ub294 \uc22b\uc790\ub97c \ud3ec\ud568\ud574\uc57c \ud569\ub2c8\ub2e4."},
+
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        "{0}\uc5d0 \ub300\ud55c \uac12\uc740 \uc608 \ub610\ub294 \uc544\ub2c8\uc624\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        "{0} \uba54\uc18c\ub4dc \ud638\ucd9c\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "ElemTemplateElement \uc778\uc2a4\ud134\uc2a4 \uc791\uc131\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4"},
+
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "\uc774 \ubb38\uc11c\uc5d0\uc11c \ubb38\uc790\uac00 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4"},
+
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "\"{0}\" \uc18d\uc131\uc774 {1} \uc694\uc18c\uc5d0 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "\uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \uba54\uc18c\ub4dc\uc785\ub2c8\ub2e4 "},
+
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+
+  {
+    ER_BAD_VALUE,
+     "{0} \uc798\ubabb\ub41c \uac12 {1} "},
+
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "{0} \uc18d\uc131 \uac12\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 "},
+
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "{0} \uc18d\uc131 \uac12\uc744 \uc778\uc2dd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 "},
+
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter\ub97c \ub2e4\uc2dc \uc2dc\uc791\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "startParse \uc694\uccad \uc804\uc5d0 XMLReader\ub97c \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "\ub110 URI\ub85c \uc774\ub984 \uacf5\uac04 \uc811\ub450\ubd80\ub97c \uc0dd\uc131\ud558\ub824\uace0 \uc2dc\ub3c4 \uc911\uc785\ub2c8\ub2e4"},
+      
+  
+    // Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "\uac00\uc7a5 \ud070 Long \uc815\uc218\ubcf4\ub2e4 \ud070 \uc22b\uc790 \uc11c\uc2dd\uc744 \uc9c0\uc815\ud558\ub824\uace0 \uc2dc\ub3c4 \uc911\uc785\ub2c8\ub2e4."},
+
+
+//ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "SAX1 \ub4dc\ub77c\uc774\ubc84 \ud074\ub798\uc2a4 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+//ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "SAX1 \ub4dc\ub77c\uc774\ubc84 \ud074\ub798\uc2a4 {0}\uc744(\ub97c) \ucc3e\uc558\uc9c0\ub9cc \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+//ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "SAX1 \ub4dc\ub77c\uc774\ubc84 \ud074\ub798\uc2a4 {0}\uc744(\ub97c) \ub85c\ub4dc\ud588\uc9c0\ub9cc \uc778\uc2a4\ud134\uc2a4\ud654\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+
+// ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "SAX1 \ub4dc\ub77c\uc774\ubc84 \ud074\ub798\uc2a4 {0}\uc740(\ub294) org.xml.sax.Parser\ub97c \uad6c\ud604\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+
+// ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "org.xml.sax.parser \uc2dc\uc2a4\ud15c \ud2b9\uc131\uc774 \uc9c0\uc815\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+
+//ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "Parser \uc778\uc790\ub294 \ub110\uc774 \uc544\ub2c8\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+
+// ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+
+  {
+    ER_FEATURE,
+     "\uae30\ub2a5: {0}"},
+
+
+
+// ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+
+  {
+    ER_PROPERTY,
+     "\ud2b9\uc131: {0}"},
+
+
+// ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "\ub110 \uc5d4\ud2f0\ud2f0 \uacb0\uc815\uc790"},
+
+
+// ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "\ub110 DTD \ucc98\ub9ac\uae30"},
+
+
+// No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "\ub4dc\ub77c\uc774\ubc84 \uc774\ub984\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc74c!"},
+
+
+
+// No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+
+  {
+    ER_NO_URL_SPECIFIED,
+     "URL\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc74c!"},
+
+
+
+// Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "\ud480 \ud06c\uae30\uac00 1\ubcf4\ub2e4 \uc791\uc74c!"},
+
+
+
+// Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+
+  {
+    ER_INVALID_DRIVER_NAME,
+     "\uc798\ubabb\ub41c \ub4dc\ub77c\uc774\ube0c \uc774\ub984\uc774 \uc9c0\uc815\ub428!"},
+
+
+
+
+// ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+
+  {
+    ER_ERRORLISTENER,
+     "\uc624\ub958 \uc218\uc2e0\uae30"},
+
+
+
+// Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "\ud504\ub85c\uadf8\ub798\uba38 \uc624\ub958! \uc2dd\uc5d0 ElemTemplateElement \ubd80\ubaa8\uac00 \uc5c6\uc74c!"},
+
+
+
+// Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "RundundentExprEliminator\uc758 \ud504\ub85c\uadf8\ub798\uba38 \uba85\uc81c: {0}"},
+
+
+// Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "\ucd95 \ud2b8\ub798\ubc84\uc11c\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc74c: {0}"},
+
+
+// ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+
+  {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "ListingErrorHandler\uac00 \ub110 PrintWriter\ub85c \uc791\uc131\ub428!"},
+
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "\uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uc758 \uc774 \uc704\uce58\uc5d0\ub294 {0}\uc744(\ub97c) \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "\uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uc758 \uc774 \uc704\uce58\uc5d0\ub294 \uacf5\ubc31\uc774 \uc544\ub2cc \ud14d\uc2a4\ud2b8\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+
+  {
+    INVALID_TCHAR,
+     "\uc798\ubabb\ub41c \uac12:  CHAR \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1}.  CHAR \uc720\ud615\uc758 \uc18d\uc131\uc740 1\uc790\uc5ec\uc57c \ud569\ub2c8\ub2e4!"},
+
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "\uc2dc\uc2a4\ud15c ID\ub97c \uc54c \uc218 \uc5c6\uc74c"},
+
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+
+  {
+    ER_LOCATION_UNKNOWN,
+     "\uc624\ub958 \uc704\uce58\ub97c \uc54c \uc218 \uc5c6\uc74c"},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+
+  {
+    INVALID_QNAME,
+     "\uc798\ubabb\ub41c \uac12: QNAME \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1}"},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+
+  {
+    INVALID_ENUM,
+     "\uc798\ubabb\ub41c \uac12: ENUM \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1}.  \uc720\ud6a8\ud55c \uac12: {2}."},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+
+  {
+    INVALID_NMTOKEN,
+     "\uc798\ubabb\ub41c \uac12: NMTOKEN \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+
+  {
+    INVALID_NCNAME,
+     "\uc798\ubabb\ub41c \uac12: NCNAME \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+
+  {
+    INVALID_BOOLEAN,
+     "\uc798\ubabb\ub41c \uac12: boolean \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+
+  {
+    INVALID_NUMBER,
+     "\uc798\ubabb\ub41c \uac12: number \uc18d\uc131 {0}\uc5d0 \uc0ac\uc6a9\ub41c {1} "},
+
+
+
+  // End of shared codes...
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+
+  {
+    ER_ARG_LITERAL,
+     "\uc77c\uce58 \ud328\ud134\uc5d0\uc11c {0}\uc5d0 \ub300\ud55c \uc778\uc790\ub294 \ub9ac\ud130\ub7f4\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "\uc911\ubcf5\ub418\ub294 \uc804\uc5ed \ubcc0\uc218 \uc120\uc5b8"},
+
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+
+  {
+    ER_DUPLICATE_VAR,
+     "\uc911\ubcf5\ub418\ub294 \ubcc0\uc218 \uc120\uc5b8"},
+
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "xsl:template\uc740 name \ub610\ub294 match \uc18d\uc131(\ub610\ub294 \ubaa8\ub450)\uc744 \uac00\uc838\uc57c \ud569\ub2c8\ub2e4."},
+
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+
+  {
+    ER_INVALID_PREFIX,
+     "exclude-result-prefixes\uc758 \uc811\ub450\uc5b4\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+
+  {
+    ER_NO_ATTRIB_SET,
+     "\uc774\ub984\uc774 {0}\uc778 \uc18d\uc131 \uc9d1\ud569\uc774 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+  
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "'}'\ub97c \ucc3e\uc558\uc73c\ub098 \uc18d\uc131 \ud15c\ud50c\ub9ac\ud2b8\ub97c \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "\uacbd\uace0: \uce74\uc6b4\ud2b8 \uc18d\uc131\uc774 xsl:number\uc758 \uc0c1\uc704\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! \ub300\uc0c1 = {0}"},
+
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "\uc774\uc804 \uad6c\ubb38: 'expr' \uc18d\uc131\uc758 \uc774\ub984\uc774 'select'\ub85c \ubcc0\uacbd\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan\uc774 format-number \uae30\ub2a5\uc5d0\uc11c \ub85c\ucf08 \uc774\ub984\uc744 \uc544\uc9c1 \ucc98\ub9ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "\uacbd\uace0: xml:lang={0}\uc5d0 \ub300\ud55c \ub85c\ucf08\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "{0}\uc5d0\uc11c URL\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "\uc694\uccad\ud55c \ubb38\uc11c {0}\uc744(\ub97c) \ub85c\ub4dc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "<sort xml:lang={0}\uc5d0 \ub300\ud55c \uc870\ud569\uae30\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "\uc774\uc804 \uad6c\ubb38: \ud568\uc218 \uc9c0\uc2dc\uc0ac\ud56d\uc740 {0} url\uc744 \uc0ac\uc6a9\ud574\uc57c \ud569\ub2c8\ub2e4."},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "UTF-8\uc744 \uc0ac\uc6a9\ud558\uc5ec \ucf54\ub4dc\ud654\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "Java {1}\uc744(\ub97c) \uc0ac\uc6a9\ud558\uc5ec \ucf54\ub4dc\ud654\uac00 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0} "},
+
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "\ud2b9\uc774\uc131 \ucda9\ub3cc\uc774 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4: \uc2a4\ud0c0\uc77c \uc2dc\ud2b8\uc5d0\uc11c \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ubc1c\uacac\ub41c {0}\uc774(\uac00) \uc0ac\uc6a9\ub429\ub2c8\ub2e4."},
+
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= {0}\uc744(\ub97c) \uad6c\ubb38 \ubd84\uc11d \ubc0f \uc900\ube44 \uc911 =========="},
+
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+
+  {
+    WG_ATTR_TEMPLATE, "Attr \ud15c\ud50c\ub9ac\ud2b8, {0}"},
+
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "xsl:strip-space \ubc0f xsl:preserve-space \uac04\uc758 \uc77c\uce58 \ucda9\ub3cc"},
+
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan\uc774 \uc544\uc9c1 {0} \uc18d\uc131\uc744 \ucc98\ub9ac\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "\uc2ed\uc9c4\uc218 \ud615\uc2dd {0}\uc5d0 \ub300\ud55c \uc120\uc5b8\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+
+  {
+    WG_OLD_XSLT_NS, "XSLT \uc774\ub984 \uacf5\uac04\uc774 \ube60\uc84c\uac70\ub098 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4. "},
+
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "\ud558\ub098\uc758 \uae30\ubcf8 xsl:decimal-format \uc120\uc5b8\ub9cc \ud5c8\uc6a9\ub429\ub2c8\ub2e4."},
+
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-format \uc774\ub984\uc740 \uace0\uc720\ud574\uc57c \ud569\ub2c8\ub2e4. \"{0}\"\uc740(\ub294) \uc911\ubcf5\ub429\ub2c8\ub2e4."},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0}\uc5d0 \uc798\ubabb\ub41c \uc18d\uc131 {1}\uc774(\uac00) \uc788\uc2b5\ub2c8\ub2e4."},
+
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "\uc774\ub984 \uacf5\uac04 \uc811\ub450\uc5b4 {0}\uc744(\ub97c) \uacb0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \ub178\ub4dc\ub294 \ubb34\uc2dc\ub429\ub2c8\ub2e4."},
+
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet\uc5d0 'version' \uc18d\uc131\uc774 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "\uc798\ubabb\ub41c \uc18d\uc131 \uc774\ub984: {0}"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "{0} \uc18d\uc131\uc5d0 \uc798\ubabb\ub41c \uac12 {1}\uc774(\uac00) \uc0ac\uc6a9\ub418\uc5c8\uc2b5\ub2c8\ub2e4"},
+
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "\ubb38\uc11c \uae30\ub2a5\uc758 \ub450 \ubc88\uc9f8 \uc778\uc790\uc758 \uacb0\uacfc\ub85c \ubc1c\uc0dd\ud55c \ub178\ub4dc \uc138\ud2b8\uac00 \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uccab \ubc88\uc9f8 \uc778\uc790\uac00 \uc0ac\uc6a9\ub429\ub2c8\ub2e4."},
+
+
+  // Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "xsl:processing-instruction \uc774\ub984\uc758 'name' \uc18d\uc131 \uac12\uc740 'xml'\uc774\uc5b4\uc11c\ub294 \uc548\ub429\ub2c8\ub2e4."},
+
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "xsl:processing-instruction\uc758 'name' \uc18d\uc131 \uac12\uc740 \uc720\ud6a8\ud55c NCName\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4: {0}"},
+
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "\ud558\uc704 \ub178\ub4dc \ub2e4\uc74c\uc774\ub098 \ub610\ub294 \uc694\uc18c\uac00 \ub9cc\ub4e4\uc5b4\uc9c0\uae30 \uc804\uc5d0 \uc18d\uc131 {0}\uc744(\ub97c) \ucd94\uac00\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  \uc18d\uc131\uc774 \ubb34\uc2dc\ub429\ub2c8\ub2e4."},
+
+
+    // WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "ko"},
+  { "help_language", "ko"},
+  { "language", "ko"},
+    { "BAD_CODE",
+      "createMessage\uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \ubc14\uc6b4\ub4dc\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4."},
+    { "FORMAT_FAILED",
+      "messageFormat \ud638\ucd9c \uc2dc \uc608\uc678 \ubc1c\uc0dd"},
+    { "version", ">>>>>>> Xalan \ubc84\uc804 "},
+    { "version2", "<<<<<<<"},
+    { "yes", "\uc608"},
+    { "line", "\ud589 #"},
+    { "column", "\uc5f4 #"},
+    { "xsldone", "XSLProcessor: \uc644\ub8cc"},
+    { "xslProc_option",
+    "Xalan-J \uba85\ub839\uc904 \ud504\ub85c\uc138\uc2a4 \ud074\ub798\uc2a4 \uc635\uc158:"},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT", "   [-OUT outputFileName]"},
+    { "optionLXCIN",
+      "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT",
+      "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER",
+      "   [-PARSER \uad6c\ubb38 \ubd84\uc11d\uae30 liaison\uc758 \uc644\uc804\ud55c \ud074\ub798\uc2a4 \uc774\ub984]"},
+    { "optionE",
+    "   [-E (\uc5d4\ud2f0\ud2f0 refs\ub97c \ud655\uc7a5\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.)]"},
+    { "optionV",
+    "   [-E (\uc5d4\ud2f0\ud2f0 refs\ub97c \ud655\uc7a5\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.)]"},
+    { "optionQC",
+      "   [-QC (\ubb34\uc74c \ud328\ud134 \ucda9\ub3cc \uacbd\uace0)]"},
+    { "optionQ", "   [-Q  (\ubb34\uc74c \ubaa8\ub4dc)]"},
+    { "optionLF",
+      "   [-LF (\ucd9c\ub825\uc5d0\uc11c\ub9cc \uc904 \ubc14\uafc8\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. {\uae30\ubcf8\uac12\uc740 CR/LF\uc785\ub2c8\ub2e4.})]"},
+    { "optionCR",
+      "   [-CR (\ucd9c\ub825\uc5d0\uc11c\ub9cc \uce90\ub9ac\uc9c0 \ub9ac\ud134\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. {\uae30\ubcf8\uac12\uc740 CR/LF\uc785\ub2c8\ub2e4.})]"},
+    { "optionESCAPE",
+      "   [-ESCAPE (\uc81c\uc5b4\ud560 \ubb38\uc790 {\uae30\ubcf8\uac12\uc740 <>&\"\'\\r\\n}]"},
+    { "optionINDENT",
+      "   [-INDENT (\ub4e4\uc5ec\uc4f0\uae30\ud560 \uacf5\ubc31 \uc218\ub97c \uc81c\uc5b4\ud569\ub2c8\ub2e4. {\uae30\ubcf8\uac12\uc740 0\uc785\ub2c8\ub2e4.})]"},
+    { "optionTT",
+      "   [-TT (\ud638\ucd9c\ub420 \ub54c \ud15c\ud50c\ub9ac\ud2b8\ub97c \ucd94\uc801\ud569\ub2c8\ub2e4.)]"},
+    { "optionTG",
+      "   [-TG (\uac01 \uc0dd\uc131 \uc774\ubca4\ud2b8\ub97c \ucd94\uc801\ud569\ub2c8\ub2e4.)]"},
+    { "optionTS",
+    "   [-TS (\uac01 \uc120\ud0dd \uc774\ubca4\ud2b8\ub97c \ucd94\uc801\ud569\ub2c8\ub2e4.)]"},
+    { "optionTTC",
+      "   [-TTC (\ucc98\ub9ac\ub420 \ub54c \ud15c\ud50c\ub9ac\ud2b8 \uc790\uc2dd\uc744 \ucd94\uc801\ud569\ub2c8\ub2e4.)]"},
+    { "optionTCLASS",
+      "   [-TCLASS (\ucd94\uc801 \ud655\uc7a5\uc5d0 \ub300\ud55c TraceListener \ud074\ub798\uc2a4\uc785\ub2c8\ub2e4.)]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE (\uac80\uc99d \uc5ec\ubd80\ub97c \uc124\uc815\ud569\ub2c8\ub2e4. \uae30\ubcf8\uac12\uc740 \uac80\uc99d\uc774 \ubc1c\uc0dd\ud558\uc9c0 \uc54a\ub294 \uac83\uc785\ub2c8\ub2e4.)]"},
+    { "optionEDUMP",
+      "   [-EDUMP {\uc120\ud0dd\uc801 \ud30c\uc77c \uc774\ub984} (\uc624\ub958\uac00 \ubc1c\uc0dd\ud558\uba74 \uc2a4\ud0dd\ub364\ud504 \ud558\uc2ed\uc2dc\uc624.)]"},
+    { "optionXML",
+      "   [-XML (XML \ud3ec\ub9e4\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec XML \ud5e4\ub354\ub97c \ucd94\uac00\ud558\uc2ed\uc2dc\uc624.)]"},
+    { "optionTEXT",
+      "   [-TEXT (\ub2e8\uc21c \ud14d\uc2a4\ud2b8 \ud3ec\ub9e4\ud130\ub97c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.)]"},
+    { "optionHTML",
+    "   [-HTML (HTML \ud3ec\ub9e4\ud130\ub97c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.)]"},
+    { "optionPARAM",
+      "   [-PARAM \uc774\ub984 \ud45c\ud604\uc2dd (\uc2a4\ud0c0\uc77c \uc2dc\ud2b8 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc124\uc815\ud558\uc2ed\uc2dc\uc624.)]"},
+    { "noParsermsg1",
+    "XSL \ud504\ub85c\uc138\uc2a4\uac00 \uc131\uacf5\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
+    { "noParsermsg2",
+    "** \uad6c\ubb38 \ubd84\uc11d\uae30\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 **"},
+    { "noParsermsg3",
+    "\ud074\ub798\uc2a4 \uacbd\ub85c\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624."},
+    { "noParsermsg4",
+      "Java\uc6a9 IBM XML \uad6c\ubb38 \ubd84\uc11d\uae30\uac00 \uc5c6\ub294 \uacbd\uc6b0 \ub2e4\uc74c\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."},
+    { "noParsermsg5",
+      "IBM AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+    { "optionURIRESOLVER",
+    "   [-URIRESOLVER \uc804\uccb4 \ud074\ub798\uc2a4 \uc774\ub984(URI\ub97c \uacb0\uc815\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 URIResolver)]"},
+    { "optionENTITYRESOLVER",
+    "   [-ENTITYRESOLVER \uc804\uccb4 \ud074\ub798\uc2a4 \uc774\ub984(\uc5d4\ud2f0\ud2f0\ub97c \uacb0\uc815\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 EntityResolver)]"},
+    {  "optionCONTENTHANDLER",
+    "   [-CONTENTHANDLER \uc804\uccb4 \ud074\ub798\uc2a4 \uc774\ub984(\ucd9c\ub825\uc744 \uc77c\ub828\ud654\ud558\ub294 \ub370 \uc0ac\uc6a9\ub418\ub294 ContentHandler)]"},
+    { "optionLINENUMBERS",
+    "   [-L \uc18c\uc2a4 \ubb38\uc11c\uc758 \uc904 \ubc88\ud638 \uc0ac\uc6a9]"},
+		
+    // Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+    " [-MEDIA mediaType(media \uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubb38\uc11c\uc640 \uad00\ub828\ub41c \uc2a4\ud0c0\uc77c \uc2dc\ud2b8\ub97c \ucc3e\uc2b5\ub2c8\ub2e4.)]"},
+    { "optionFLAVOR",
+    " [-FLAVOR flavorName(\ubcc0\ud658\ud558\ub824\uba74 \uba85\uc2dc\uc801\uc73c\ub85c s2s=SAX \ub610\ub294 d2d=DOM\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+    " [-DIAG(\ubcc0\ud658\uc5d0 \uac78\ub9b0 \uc804\uccb4 \uc2dc\uac04(\ubc00\ub9ac\ucd08)\ub97c \uc778\uc1c4\ud569\ub2c8\ub2e4.)]"},
+    { "optionINCREMENTAL",
+    " [-INCREMENTAL (http://xml.apache.org/xalan/features/incremental\uc744 true\ub85c \uc124\uc815\ud558\uc5ec \uc99d\ubd84 DTP \uc0dd\uc131\uc744 \uc694\uccad\ud569\ub2c8\ub2e4.)]"},
+    { "optionNOOPTIMIMIZE",
+    " [-NOOPTIMIMIZE (http://xml.apache.org/xalan/features/optimize\ub97c false\ub85c \uc124\uc815\ud558\uc5ec \uc2a4\ud0c0\uc77c \uc2dc\ud2b8 \ucd5c\uc801\ud654 \ucc98\ub9ac\ub97c \uc694\uccad\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.)]"},
+    { "optionRL",
+    " [-RL recursionlimit(\uc2a4\ud0c0\uc77c \uc2dc\ud2b8 \uc7ac\uadc0 \uae4a\uc774\uc5d0 \ub300\ud574 \uc22b\uc790 \uc81c\ud55c\uc744 \uc9c0\uc815\ud569\ub2c8\ub2e4.)]"},
+    { "optionXO",
+    " [-XO [transletName] (\uc0dd\uc131\ub41c translet\uc5d0 \uc774\ub984\uc744 \ud560\ub2f9\ud569\ub2c8\ub2e4.)]"},
+    { "optionXD",
+    " [-XD destinationDirectory(translet\uc5d0 \ub300\ud55c \ub300\uc0c1 \ub514\ub809\ud1a0\ub9ac\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.)]"},
+    { "optionXJ",
+    " [-XJ jarfile(translet \ud074\ub798\uc2a4\ub97c \uc774\ub984\uc774 <jarfile>\uc778 jar \ud30c\uc77c\ub85c \ud328\ud0a4\uc9c0\ud654\ud569\ub2c8\ub2e4.)]"},
+    { "optionXP",
+    " [-XP package(\uc0dd\uc131\ub41c \ubaa8\ub4e0 translet \ud074\ub798\uc2a4\uc5d0 \ub300\ud574 \ud328\ud0a4\uc9c0 \uc774\ub984 \uc811\ub450\uc5b4\ub97c \uc9c0\uc815\ud569\ub2c8\ub2e4.)]"}
+
+
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#error";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "\uc624\ub958: ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "\uacbd\uace0: ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_sv.java b/src/org/apache/xalan/res/XSLTErrorResources_sv.java
new file mode 100644
index 0000000..59e6b76
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_sv.java
@@ -0,0 +1,2843 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+public class XSLTErrorResources_sv extends XSLTErrorResources
+{
+
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;          
+
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+
+  {
+    ER_NO_CURLYBRACE,
+      "Fel: Kan inte ha '{' inuti uttryck"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0} har ett otill\u00e5tet attribut: {1}"},
+
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "sourceNode \u00e4r null i xsl:apply-imports!"},
+
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+
+  {
+    ER_CANNOT_ADD, "Kan inte l\u00e4gga {0} till {1}"},
+
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "sourceNode \u00e4r null i handleApplyTemplatesInstruction!"},
+
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+
+  {
+    ER_NO_NAME_ATTRIB, "{0} m\u00e5ste ha ett namn-attribut."},
+
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "Hittade inte mallen med namn: {0}"},
+
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "Kunde inte l\u00f6sa namn-AVT i xsl:call-template."},
+
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+
+  {
+    ER_REQUIRES_ATTRIB, "{0} kr\u00e4ver attribut: {1}"},
+
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} m\u00e5ste ha ett ''test''-attribut."},
+
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "D\u00e5ligt v\u00e4rde p\u00e5 niv\u00e5-attribut: {0}"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "Namn p\u00e5 behandlande instruktion f\u00e5r inte vara 'xml'"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "Namn p\u00e5 behandlande instruktion m\u00e5ste vara ett giltigt NCNamn: {0}"},
+
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0} m\u00e5ste ha ett matchningsattribut om det har ett tillst\u00e5nd."},
+
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} kr\u00e4ver antingen ett namn eller ett matchningsattribut."},
+
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "Kan inte l\u00f6sa namnrymdsprefix: {0}"},
+
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space har ett otill\u00e5tet v\u00e4rde: {0}"},
+
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+
+  {
+    ER_NO_OWNERDOC,
+      "Barnnod saknar \u00e4gardokument!"},
+
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "ElemTemplateElement-fel: {0}"},
+
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+
+  {
+    ER_NULL_CHILD, "F\u00f6rs\u00f6ker l\u00e4gga till ett null-barn!"},
+
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0} kr\u00e4ver ett valattribut."},
+
+
+  /** ER_NEED_TEST_ATTRIB          */
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when m\u00e5ste ha ett 'test'-attribut."},
+
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param m\u00e5ste ha ett 'namn'-attribut."},
+
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "Kontext saknar \u00e4gardokument!"},
+
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "Kunde inte skapa XML TransformerFactory Liaison: {0}"},
+
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: Process misslyckades."},
+
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan: misslyckades."},
+
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "Kodning inte underst\u00f6dd: {0}"},
+
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "Kunde inte skapa TraceListener: {0}"},
+
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key m\u00e5ste ha ett 'namn'-attribut."},
+
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key m\u00e5ste ha ett 'matcha'-attribut."},
+
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key m\u00e5ste ha ett 'anv\u00e4nd'-attribut."},
+
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} kr\u00e4ver ett ''element''-attribut!"},
+
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} ''prefix''-attribut saknas"},
+
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+
+  {
+    ER_BAD_STYLESHEET_URL, "Stylesheet URL \u00e4r d\u00e5lig: {0}"},
+
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+
+  {
+    ER_FILE_NOT_FOUND, "Stylesheet-fil saknas: {0}"},
+
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+
+  {
+    ER_IOEXCEPTION,
+      "Fick IO-Undantag med stylesheet-fil: {0}"},
+
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) Hittade inte href-attribute f\u00f6r {0}"},
+
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} inkluderar, direkt eller indirekt, sig sj\u00e4lv!"},
+
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude-fel, {0}"},
+
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} ''lang''-attribut' saknas"},
+
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) felplacerade {0} element?? Saknar beh\u00e5llarelement  ''komponent''"},
+
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "Kan endast skicka utdata till ett Element, ett DocumentFragment, ett Document, eller en PrintWriter."},
+
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+
+  {
+    ER_PROCESS_ERROR, "StylesheetRoot.process-fel"},
+
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+
+  {
+    ER_UNIMPLNODE_ERROR, "UnImplNode-fel: {0}"},
+
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "Fel! Hittade inte xpath select-uttryck (-select)."},
+
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "Kan inte serialisera en XSLProcessor!"},
+
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "Stylesheet-indata ej angiven!"},
+
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "Kunde inte behandla stylesheet!"},
+
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+
+  {
+    ER_COULDNT_PARSE_DOC, "Kunde inte tolka {0} dokument!"},
+
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "Hittade inte fragment: {0}"},
+
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "Nod som pekades p\u00e5 av fragment-identifierare var inte ett element: {0}"},
+
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each kr\u00e4ver antingen en matchning eller ett namnattribut."},
+
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "mallar kr\u00e4ver antingen en matchning eller ett namnattribut."},
+
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "Ingen klon av ett dokumentfragment!"},
+
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "Kan inte skapa element i resultattr\u00e4d: {0}"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "xml:space i k\u00e4ll-XML har ett otill\u00e5tet v\u00e4rde: {0}"},
+
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "Det finns ingen xsl:key-deklaration f\u00f6r {0}!"},
+
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+
+  {
+    ER_CANT_CREATE_URL, "Fel! Kan inte skapa url f\u00f6r: {0}"},
+
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "xsl:functions \u00e4r inte underst\u00f6dd"},
+
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+
+  {
+    ER_PROCESSOR_ERROR, "XSLT TransformerFactory-Fel"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} \u00e4r inte till\u00e5ten inne i ett stylesheet!"},
+
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "result-ns inte l\u00e4ngre underst\u00f6dd!  Anv\u00e4nd xsl:output ist\u00e4llet."},
+
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "default-space inte l\u00e4ngre underst\u00f6dd!  Anv\u00e4nd xsl:strip-space eller xsl:preserve-space ist\u00e4llet."},
+
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "indent-result inte l\u00e4ngre underst\u00f6dd!  Anv\u00e4nd xsl:output ist\u00e4llet."},
+
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} har ett otill\u00e5tet attribut: {1}"},
+
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "Ok\u00e4nt XSL-element: {0}"},
+
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort kan endast anv\u00e4ndas med xsl:apply-templates eller xsl:for-each."},
+
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) felplacerade xsl:when!"},
+
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when h\u00e4rstammar inte fr\u00e5n xsl:choose!"},
+
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) felplacerade xsl:otherwise!"},
+
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise h\u00e4rstammar inte fr\u00e5n xsl:choose!"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} \u00e4r inte till\u00e5ten inne i en mall!"},
+
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} utbyggnadsnamnrymdsprefix {1} ok\u00e4nt"},
+
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) Imports kan endast f\u00f6rekomma som de f\u00f6rsta elementen i ett stylesheet!"},
+
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} importerar, direkt eller indirekt, sig sj\u00e4lv!"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space har ett otill\u00e5tet v\u00e4rde: {0}"},
+
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet misslyckades!"},
+
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+
+  {
+    ER_SAX_EXCEPTION, "SAX-Undantag"},
+
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "Funktion inte underst\u00f6dd:"},
+
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+
+  {
+    ER_XSLT_ERROR, "XSLT-fel"},
+
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "valutatecken \u00e4r inte till\u00e5tet i formatm\u00f6nsterstr\u00e4ng"},
+
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "Dokumentfunktion inte underst\u00f6dd i Stylesheet DOM!"},
+
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "Kan inte l\u00f6sa prefix i icke-Prefixl\u00f6sare!"},
+
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "Redirect extension: Hittade inte filnamn - fil eller valattribut m\u00e5ste returnera vald  str\u00e4ng."},
+
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "Kan inte bygga FormatterListener i Redirect extension!"},
+
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "Prefix i exkludera-resultat-prefix \u00e4r inte giltig: {0}"},
+
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+
+  {
+    ER_MISSING_NS_URI,
+      "Namnrymds-URI saknas f\u00f6r angivna prefix"},
+
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "Argument saknas f\u00f6r alternativ: {0}"},
+
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+
+  {
+    ER_INVALID_OPTION, "Ogiltigt alternativ: {0}"},
+
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "Fel format p\u00e5 formatstr\u00e4ng: {0}"},
+
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet m\u00e5ste ha ett 'version'-attribut!"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "Attribut: {0} har ett otill\u00e5tet v\u00e4rde: {1}"},
+
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose kr\u00e4ver ett xsl:when"},
+
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports inte till\u00e5tet i ett xsl:for-each"},
+
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "Kan inte anv\u00e4nda DTMLiaison till en DOM utdatanod... skicka en org.apache.xpath.DOM2Helper ist\u00e4llet!"},
+
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "Kan inte anv\u00e4nda DTMLiaison till en DOM indatanod... skicka en org.apache.xpath.DOM2Helper ist\u00e4llet!"},
+
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "Anrop till anslutningselement misslyckades: {0}"},
+
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "Prefix m\u00e5ste l\u00f6sa till en mamnrymd: {0}"},
+
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Ogiltigt UTF-16-surrogat uppt\u00e4ckt: {0} ?"},
+
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} anv\u00e4nde sig sj\u00e4lvt, vilket kommer att orsaka en  o\u00e4ndlig loop."},
+
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "Kan inte blanda icke-Xerces-DOM-indata med Xerces-DOM-utdata!"},
+
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "I ElemTemplateElement.readObject: {0}"},
+
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "Hittade mer \u00e4n en mall med namnet: {0}"},
+
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+
+  {
+    ER_INVALID_KEY_CALL,
+      "Ogiltigt funktionsanrop: rekursiva key()-anrop \u00e4r inte till\u00e5tna"},
+
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+
+  {
+    ER_REFERENCING_ITSELF,
+      "Variabel {0} h\u00e4nvisar, direkt eller indirekt, till sig sj\u00e4lv!"},
+
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "Indatanoden till en DOMSource f\u00f6r newTemplates f\u00e5r inte vara null!"},
+
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"Klassfil f\u00f6r alternativ {0} saknas"},
+
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"N\u00f6dv\u00e4ndigt element saknas: {0}"},
+
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream f\u00e5r inte vara null"},
+
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI f\u00e5r inte vara null"},
+
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"Fil f\u00e5r inte vara null"},
+
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource f\u00e5r inte vara null"},
+
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"Kan inte skriva \u00f6ver orsak"},
+
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"Kan inte initialisera BSF Manager"},
+
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"Kunde inte kompilera anslutning"},
+
+  
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "Kunde inte skapa anslutning: {0} p\u00e5 grund av: {1}"},
+
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "Instansmetodanrop till metod {0} kr\u00e4ver en Objektinstans som f\u00f6rsta argument"},
+
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "Ogiltigt elementnamn angivet {0}"},
+
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "Elementnamnmetod m\u00e5ste vara static {0}"},
+
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "Anslutningsfunktion {0} : {1} \u00e4r ok\u00e4nd"},
+
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "Fler \u00e4n en b\u00e4sta matchning f\u00f6r konstruktor f\u00f6r {0}"},
+
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "Fler \u00e4n en b\u00e4sta matchning f\u00f6r metod {0}"},
+
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "Fler \u00e4n en b\u00e4sta matchning f\u00f6r elementmetod {0}"},
+
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "Ogiltig kontext skickad f\u00f6r att utv\u00e4rdera {0}"},
+
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+
+  {
+    ER_POOL_EXISTS,
+             "Pool finns redan"},
+
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+
+  {
+    ER_NO_DRIVER_NAME,
+             "Inget driver-namn angivet"},
+
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+
+  {
+    ER_NO_URL,
+             "Ingen URL angiven"},
+
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "Poolstorlek \u00e4r mindre \u00e4n ett!"},
+
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+
+  {
+    ER_INVALID_DRIVER,
+             "Ogiltigt driver-namn angivet"},
+
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "Hittade inte stylesheet-roten!"},
+
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "Ogiltigt v\u00e4rde f\u00f6r xml:space"},
+
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "processFromNode misslyckades"},
+
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "Resursen [ {0} ] kunde inte laddas: {1} \n {2} \t {3}"},
+
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "Bufferstorlek <=0"},
+
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "Ok\u00e4nt fel vid anslutningsanrop"},
+
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "Prefix{0} har inte en motsvarande namnrymdsdeklaration"},
+
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "Elementinneh\u00e5ll \u00e4r inte till\u00e5tet f\u00f6r lang=javaclass {0}"},
+
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "Stylesheet-ledd avslutning"},
+
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+
+  {
+    ER_ONE_OR_TWO,
+        "1 eller 2"},
+
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+
+  {
+    ER_TWO_OR_THREE,
+        "2 eller 3"},
+
+  
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "Kunde inte ladda {0} (kontrollera CLASSPATH), anv\u00e4nder nu enbart standard"},
+
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "Kan inte initialisera standardmallar"},
+
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+
+  {
+    ER_RESULT_NULL,
+        "Result borde inte vara null"},
+
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "Result kunde inte s\u00e4ttas"},
+
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "Ingen utdata angiven"},
+
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "Kan inte omvandla till en Result av typ {0}"},
+
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "Kan inte omvandla en Source av typ {0}"},
+
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "Inneh\u00e5llshanterare med v\u00e4rde null"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Felhanterare med v\u00e4rde null"},
+
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "parse kan inte anropas om ContentHandler inte har satts"},
+
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "Ingen f\u00f6r\u00e4lder till filter"},
+
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "Stylesheet saknas i: {0}, media= {1}"},
+
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "xml-stylesheet PI saknas i: {0}"},
+
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "Standardimplementering saknas i:"},
+
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "ChunkedIntArray({0}) underst\u00f6ds f\u00f6r n\u00e4rvarande inte"},
+
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "Offset st\u00f6rre \u00e4n fack"},
+
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "Sidorutin inte tillg\u00e4nglig, id={0}"},
+
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager mottog co_exit()-f\u00f6rfr\u00e5gan"},
+
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet() misslyckades"},
+
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+
+  {
+    ER_COROUTINE_PARAM,
+       "Sidorutin fick parameterfel ({0})"},
+
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nOV\u00c4NTAT: Parser doTerminate-svar {0}"},
+
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "parse f\u00e5r inte anropas medan tolkning sker"},
+
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Fel: typad upprepare f\u00f6r axel {0} inte implementerad"},
+
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "Fel: upprepare f\u00f6r axel {0} inte implementerad"},
+
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "Uppreparklon underst\u00f6ds inte"},
+
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "Ok\u00e4nd axeltraverstyp: {0}"},
+
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "Axeltravers underst\u00f6ds inte: {0}"},
+
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "Inga fler DTM-IDs \u00e4r tillg\u00e4ngliga"},
+
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+
+  {
+    ER_NOT_SUPPORTED,
+       "Underst\u00f6ds inte: {0}"},
+
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+
+  {
+    ER_NODE_NON_NULL,
+       "Nod m\u00e5ste vara icke-null f\u00f6r getDTMHandleFromNode"},
+
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "Kunde inte l\u00f6sa nod till ett handtag"},
+
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "startParse f\u00e5r inte anropas medan tolkning sker"},
+
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse beh\u00f6ver en SAXParser som \u00e4r icke-null"},
+
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "kunde inte initialisera tolk med"},
+
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "V\u00e4rde p\u00e5 egenskap {0} borde vara en Boolesk instans"},
+
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "undantag skapar ny instans f\u00f6r pool"},
+
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "V\u00e4g inneh\u00e5ller ogiltig flyktsekvens"},
+
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+
+  {
+    ER_SCHEME_REQUIRED,
+       "Schema kr\u00e4vs!"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "Schema saknas i URI: {0}"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+
+  {
+    ER_NO_SCHEME_INURI,
+       "Schema saknas i URI"},
+
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "V\u00e4g inneh\u00e5ller ogiltigt tecken: {0}"},
+
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "Kan inte s\u00e4tta schema fr\u00e5n null-str\u00e4ng"},
+
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "Schemat \u00e4r inte likformigt."},
+
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "V\u00e4rd \u00e4r inte en v\u00e4lformulerad adress"},
+
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "Port kan inte s\u00e4ttas n\u00e4r v\u00e4rd \u00e4r null"},
+
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+
+  {
+    ER_INVALID_PORT,
+       "Ogiltigt portnummer"},
+
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "Fragment kan bara s\u00e4ttas f\u00f6r en allm\u00e4n URI"},
+
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "Fragment kan inte s\u00e4ttas n\u00e4r v\u00e4g \u00e4r null"},
+
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "Fragment inneh\u00e5ller ogiltigt tecken"},
+
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+
+  {
+    ER_PARSER_IN_USE,
+        "Tolk anv\u00e4nds redan"},
+
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "Kan inte \u00e4ndra {0} {1} medan tolkning sker"},
+
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "Sj\u00e4lvorsakande inte till\u00e5ten"},
+
+  
+   /* This key/message changed ,NEED ER_COULD_NOT_FIND_EXTERN_SCRIPT: Pending,Ramesh */
+
+   /** src attribute not yet supported for  */
+  //public static final int ER_SRC_ATTRIB_NOT_SUPPORTED = 195;
+
+
+  {
+    "ER_SRC_ATTRIB_NOT_SUPPORTED",
+       "src-attributet underst\u00f6ds \u00e4nnu inte f\u00f6r {0}"},
+
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "Resursen [ {0} ] saknas. \n {1}"},
+
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "Utdata-egenskap k\u00e4nns inte igen: {0}"},
+
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "Userinfo f\u00e5r inte anges om v\u00e4rden inte \u00e4r angiven"},
+
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "Port f\u00e5r inte anges om v\u00e4rden inte \u00e4r angiven"},
+
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "F\u00f6rfr\u00e5gan-str\u00e4ng kan inte anges i v\u00e4g och f\u00f6rfr\u00e5gan-str\u00e4ng"},
+
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "Fragment kan inte anges i b\u00e5de v\u00e4gen och fragmentet"},
+
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "Kan inte initialisera URI med tomma parametrar"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "Kunde inte skapa instans av ElemLiteralResult"},
+    
+  
+   // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+   // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+   //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+   //NOTE: Not only the key name but message has also been changed. - nb.
+
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+
+  {
+     ER_VALUE_SHOULD_BE_NUMBER,
+         "V\u00e4rdet f\u00f6r {0} b\u00f6r inneh\u00e5lla en siffra som inte kan tolkas"},
+
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        "V\u00e4rde p\u00e5 {0} borde motsvara ja eller nej"},
+
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        " Kunde inte anropa metoden {0}"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "Kunde inte skapa instans av ElemTemplateElement"},
+
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "Tecken \u00e4r inte till\u00e5tna i dokumentet vid den h\u00e4r tidpunkten"},
+
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "Attributet \"{0}\" \u00e4r inte till\u00e5ten i det {1} elementet!"},
+
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "Metod \u00e4nnu inte underst\u00f6dd "},
+
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+
+  {
+    ER_BAD_VALUE,
+     "{0} d\u00e5ligt v\u00e4rde {1} "},
+
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "Attributet {0} saknas "},
+
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "Attributv\u00e4rdet {0} k\u00e4nns inte igen "},
+
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter kan f\u00f6r n\u00e4rvarande inte startas om"},
+
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader inte innan startParse-beg\u00e4ran"},
+
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "F\u00f6rs\u00f6ker generera ett namnomr\u00e5desprefix med en null-URI"},
+
+
+  // Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "F\u00f6rs\u00f6ker formatera en siffra som \u00e4r st\u00f6rre \u00e4n det st\u00f6rsta l\u00e5nga heltalet"},
+
+
+//ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "Det g\u00e5r inte att hitta SAX1-drivrutinen klass {0}"},
+
+
+//ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "SAX1-drivrutinen klass {0} hittades men kan inte laddas"},
+
+
+//ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "SAX1-drivrutinen klass {0} hittades men kan inte instansieras"},
+
+
+
+// ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "SAX1-drivrutinen klass {0} implementerar inte org.xml.sax.Parser"},
+
+
+// ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "Systemegenskapen org.xml.sax.parser \u00e4r inte angiven"},
+
+
+//ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "Tolkningsargumentet f\u00e5r inte vara null"},
+
+
+
+// ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+
+  {
+    ER_FEATURE,
+     "Funktion:a {0}"},
+
+
+
+// ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+
+  {
+    ER_PROPERTY,
+     "Egenskap:a {0}"},
+
+
+// ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "Nullenhetsl\u00f6sare"},
+
+
+// ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "Null-DTD-hanterare"},
+
+
+// No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "Inget drivrutinsnamn \u00e4r angett!"},
+
+
+
+// No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+
+  {
+    ER_NO_URL_SPECIFIED,
+     "Ingen URL har angetts!"},
+
+
+
+// Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "Poolstorleken \u00e4r mindre \u00e4n 1!"},
+
+
+
+// Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+
+  {
+    ER_INVALID_DRIVER_NAME,
+     "Ett ogiltigt drivrutinsnamn har angetts!"},
+
+
+
+
+// ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+
+  {
+    ER_ERRORLISTENER,
+     "ErrorListener"},
+
+
+
+// Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "Programmerarfel! expr har inget \u00f6verordnat ElemTemplateElement!"},
+
+
+
+// Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "Programmerarkontroll i RundundentExprEliminator: {0}"},
+
+
+// Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "Det g\u00e5r inte att v\u00e4nda axeln: {0}"},
+
+
+// ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+
+  {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "ListingErrorHandler skapad med null PrintWriter!"},
+
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "{0} \u00e4r inte till\u00e5ten i denna position i formatmallen!"},
+
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "Text utan blanksteg \u00e4r inte till\u00e5ten i denna position i formatmallen!"},
+
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+
+  {
+    INVALID_TCHAR,
+     "Ogiltigt v\u00e4rde: {1} anv\u00e4nds f\u00f6r CHAR-attributet: {0}.  Ett attribut av CHAR-typ f\u00e5r bara ha 1 tecken!"},
+
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "SystemId ok\u00e4nt"},
+
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+
+  {
+    ER_LOCATION_UNKNOWN,
+     "Platsen f\u00f6r felet \u00e4r ok\u00e4nd"},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+
+  {
+    INVALID_QNAME,
+     "Ogiltigt v\u00e4rde:a {1} anv\u00e4nds f\u00f6r QNAME-attributet:a {0}"},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+
+  {
+    INVALID_ENUM,
+     "Ogiltigt v\u00e4rde:a  {1} anv\u00e4nds f\u00f6r ENUM-attributet:a {0}.  Giltiga v\u00e4rden \u00e4r:a {2}."},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+
+  {
+    INVALID_NMTOKEN,
+     "Ogiltigt v\u00e4rde:a {1} anv\u00e4nds f\u00f6r NMTOKEN-attributet:a {0} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+
+  {
+    INVALID_NCNAME,
+     "Ogiltigt v\u00e4rde:a {1} anv\u00e4nds f\u00f6r NCNAME-attributet:a {0} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+
+  {
+    INVALID_BOOLEAN,
+     "Ogiltigt v\u00e4rde:a {1} anv\u00e4nds som Booleskt attribut:a {0} "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+
+  {
+    INVALID_NUMBER,
+     "Ogiltigt v\u00e4rde:a {1} anv\u00e4nds som sifferattribut:a {0} "},
+
+
+
+  // End of shared codes...
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+
+  {
+    ER_ARG_LITERAL,
+     "Argument f\u00f6r {0} i matchningsm\u00f6nstret m\u00e5ste vara literalt."},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "Dubbel deklaration av global variabel."},
+
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+
+  {
+    ER_DUPLICATE_VAR,
+     "Dubbel variabeldeklaration."},
+
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "xsl: en mall m\u00e5ste ha ett namn och ett matchningsattribut (eller b\u00e5de och)"},
+
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+
+  {
+    ER_INVALID_PREFIX,
+     "Prefix i exclude-result-prefixes \u00e4r ogiltigt:a {0}"},
+
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+
+  {
+    ER_NO_ATTRIB_SET,
+     "attributserien {0} finns inte"},
+
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "Hittade '}' men ingen attributmall \u00e4r \u00f6ppen!"},
+
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "Varning: r\u00e4knarattribut matchar inte en f\u00f6rf\u00e4der in xsl:number! Target = {0}"},
+
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "Gammal syntax: Namnet p\u00e5  'expr'-attributet har \u00e4ndrats till 'select'."},
+
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan hanterar \u00e4nnu inte locale-namnet i funktionen format-number."},
+
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "Varning: Hittade inte locale f\u00f6r xml:lang{0}"},
+
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "Kan inte skapa URL fr\u00e5n: {0}"},
+
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "Kan inte ladda beg\u00e4rd doc: {0}"},
+
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "Hittade inte Collator f\u00f6r <sort xml:lang={0}"},
+
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "Gammal syntax: Funktionsinstruktionen borde anv\u00e4nda en url av {0}"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "kodning underst\u00f6ds inte: {0}, anv\u00e4nder UTF-8"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "kodning underst\u00f6ds inte: {0}, anv\u00e4nder Java {1}"},
+
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "Hittade specificitetskonflikter: {0} Senast hittade i stylesheet kommer att anv\u00e4ndas."},
+
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= Tolkar och f\u00f6rbereder {0} =========="},
+
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+
+  {
+    WG_ATTR_TEMPLATE, "Attributmall, {0}"},
+
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "Matcha konflikter mellan xsl:strip-space och xsl:preserve-space"},
+
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan hanterar \u00e4nnu inte attributet {0}!"},
+
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "Deklaration saknas f\u00f6r decimalformat: {0}"},
+
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+
+  {
+    WG_OLD_XSLT_NS, "XSLT-Namnrymd saknas eller \u00e4r inkorrekt "},
+
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "Endast en standarddeklaration av xsl:decimal-format \u00e4r till\u00e5ten."},
+
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-formatnamn m\u00e5ste vara unika. Namnet \"{0}\" har blivit duplicerat."},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} har ett otill\u00e5tet attribut: {1}"},
+
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "Kan inte l\u00f6sa namnrymdsprefix: {0}. Noden kommer att ignoreras."},
+
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet m\u00e5ste ha ett 'version'-attribut!"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "Otill\u00e5tet attributnamn: {0}"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "Ogiltigt v\u00e4rde anv\u00e4nt f\u00f6r attribut {0}: {1}"},
+
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "Den resulterande nodm\u00e4ngden fr\u00e5n dokumentfunktions andra argument \u00e4r tomt. Det f\u00f6rsta argumentet kommer att anv\u00e4ndas."},
+
+
+  // Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "V\u00e4rdet p\u00e5 attributet 'name' i xsl:processing-instruction f\u00e5r inte vara 'xml'"},
+
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "V\u00e4rdet p\u00e5 attributet  ''name'' i xsl:processing-instruction m\u00e5ste vara ett giltigt NCName:a {0}"},
+
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "Det g\u00e5r inte att l\u00e4gga till attributet {0} efter undernoder eller innan ett element produceras. Attributet ignoreras."},
+
+
+    // WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "sv"},
+  { "help_language", "sv"},
+  { "language", "sv"},
+    { "BAD_CODE",
+      "Parameter till createMessage ligger utanf\u00f6r till\u00e5tet intervall"},
+    { "FORMAT_FAILED",
+      "Undantag utl\u00f6st vid messageFormat-anrop"},
+    { "version", ">>>>>>> Xalan Version"},
+    { "version2", "<<<<<<<"},
+    { "yes", "ja"},
+    { "line",  "Rad #"},
+    { "column", "Kolumn #"},
+    { "xsldone", "XSLProcessor: f\u00e4rdig"},
+    { "xslProc_option", "Xalan-J kommando linje Process klass alternativ:"},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT", "   [-OUT utdataFilnamn]"},
+    { "optionLXCIN", "   [-LXCIN kompileratStylesheetFilnameIn]"},
+    { "optionLXCOUT", "   [-LXCOUT kompileratStylesheetFilenameUt]"},
+    { "optionPARSER", 
+      "   [-PARSER fullt kvalificerat klassnamn eller tolkf\u00f6rbindelse]"},
+    { "optionE", "   [-E (Ut\u00f6ka inte enhetsreferenser)]"},
+    { "optionV", "   [-E (Ut\u00f6ka inte enhetsreferenser)]"},
+    { "optionQC",
+      "   [-QC (Tysta M\u00f6nsterkonfliktvarningar)]"},
+    { "optionQ", "   [-Q  (Tyst Tillst\u00e5nd)]"},
+    { "optionLF",
+      "   [-LF (Anv\u00e4nd radframmatning enbart p\u00e5 utdata {standard \u00e4r CR/LF})]"},
+    { "optionCR",
+      "   [-CR (Anv\u00e4nd vagnretur enbart p\u00e5 utdata {standard \u00e4r CR/LF})]"},
+    { "optionESCAPE",
+      "   [-ESCAPE (Vilka tecken \u00e4r skiftningstecken {standard \u00e4r <>&\"\'\\r\\n}]"},
+    { "optionINDENT",
+      "   [-INDENT (Best\u00e4m antal blanksteg f\u00f6r att tabulera {standard \u00e4r 0})]"},
+    { "optionTT",
+      "   [-TT (Sp\u00e5ra mallarna allt eftersom de blir anropade.)]"},
+    { "optionTG",
+      "   [-TG (Sp\u00e5ra varje generationsh\u00e4ndelse.)]"},
+    { "optionTS", "   [-TS (Sp\u00e5ra varje valh\u00e4ndelse.)]"},
+    { "optionTTC",
+      "   [-TTC (Sp\u00e5ra mallbarnen allt eftersom de blir behandlade.)]"},
+    { "optionTCLASS",
+      "   [-TCLASS (TraceListener-klass f\u00f6r sp\u00e5rningsanslutningar.)]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE (S\u00e4tt om validering ska ske.  Standard \u00e4r att validering \u00e4r avst\u00e4ngd)]"},
+    { "optionEDUMP",
+      "   [-EDUMP {valfritt filnamn) (G\u00f6r stackdump vid fel.)]"},
+    { "optionXML",
+      "   [-XML (Anv\u00e4nd XML-formaterare och l\u00e4gg till XML-huvud.)]"},
+    { "optionTEXT",
+      "   [-XML (Anv\u00e4nd enkel Text-formaterare.)]"},
+    { "optionHTML", "   [-HTML (Anv\u00e4nd HTML-formaterare)]"},
+    { "optionPARAM",
+      "   [-PARAM namn uttryck (S\u00e4tt en stylesheet-parameter)]"},
+    { "noParsermsg1", "XSL-Process misslyckades."},
+    { "noParsermsg2", "** Hittade inte tolk **"},
+    { "noParsermsg3", "V\u00e4nligen kontrollera din classpath"},
+    { "noParsermsg4",
+      "Om du inte har IBMs XML-Tolk f\u00f6r Java, kan du ladda ner den fr\u00e5n"},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+    {  "optionURIRESOLVER",
+    "   [-URIRESOLVER fullst\u00e4ndigt klassnamn (URIResolver som ska anv\u00e4ndas f\u00f6r att l\u00f6sa URI-er)]"},
+    { "optionENTITYRESOLVER",
+    "   [-ENTITYRESOLVER fullst\u00e4ndigt klassnamn (EntityResolver som ska anv\u00e4ndas f\u00f6r att l\u00f6sa enheter)]"},
+    {  "optionCONTENTHANDLER",
+    "   [-CONTENTRESOLVER fullst\u00e4ndigt klassnamn (ContentHandler som ska anv\u00e4ndas f\u00f6r att serialisera utdata)]"},
+    { "optionLINENUMBERS", "   [-L anv\u00e4nd radnummer i k\u00e4lldokument]"},
+
+    //Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+    " [-MEDIA mediaType (anv\u00e4nd medieattribut f\u00f6r att hitta en formatmall som \u00e4r associerad med ett dokument.)]"},
+    { "optionFLAVOR",
+    " [-FLAVOR flavorName (Anv\u00e4nd s2s=SAX eller d2d=DOM f\u00f6r transformationen.)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+    " [-DIAG (Skriv ut totala transformationer, millisekunder.)]"},
+    { "optionINCREMENTAL",
+    " [-INCREMENTAL (beg\u00e4r inkrementell DTM-konstruktion genom att ange http://xml.apache.org/xalan/features/incremental true.)]"},
+    { "optionNOOPTIMIMIZE",
+    " [-NOOPTIMIMIZE (beg\u00e4r ingen formatmallsoptimering genom att ange http://xml.apache.org/xalan/features/optimize false.)]"},
+    { "optionRL",
+     " [-RL recursionlimit (kontrollera numerisk gr\u00e4ns p\u00e5 formatmallens rekursionsdjup.)]"},
+    { "optionXO",
+    " [-XO [transletName] (tilldela namnet till genererad translet)]"},
+    { "optionXD",
+    " [-XD destinationDirectory (ange m\u00e5lkatalog f\u00f6r translet)]"},
+    { "optionXJ",
+    " [-XJ jarfile (paketerar transletklasserna i en jar-fil med namnet <jarfile>)]"},
+    { "optionXP",
+    " [-XP-paket (anger ett paketnamnsprefix f\u00f6r alla genererade transletklasser)]"}
+
+		
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "D\u00c5LIG_KOD";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMATERING_MISSLYCKADES";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#fel";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "Fel: ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "Varning: ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "M\u00d6NSTER ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
+
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_zh_CN.java b/src/org/apache/xalan/res/XSLTErrorResources_zh_CN.java
new file mode 100644
index 0000000..ae6ecbb
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_zh_CN.java
@@ -0,0 +1,2852 @@
+/*
+ * @(#)XSLTErrorResources_zh_CN.java	1.8 01/12/04
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+public class XSLTErrorResources_zh_CN extends XSLTErrorResources
+{
+
+  /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;
+  
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+  
+  /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+
+  {
+    ER_NO_CURLYBRACE,
+      "\u9519\u8bef\uff1a\u8868\u8fbe\u5f0f\u4e2d\u4e0d\u80fd\u51fa\u73b0  '{'"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0} \u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u5c5e\u6027\uff1a {1}"},
+
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "sourceNode \u5728  xsl:apply-imports \u4e3a\u7a7a\uff01  "},
+
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+
+  {
+    ER_CANNOT_ADD, "\u65e0\u6cd5\u5c06  {0} \u6dfb\u52a0\u5230  {1} \u4e2d "},
+
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "sourceNode \u5728  handleApplyTemplatesInstruction \u4e3a\u7a7a\uff01 "},
+
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+
+  {
+    ER_NO_NAME_ATTRIB, "{0} \u5fc5\u987b\u5177\u6709\u4e00\u4e2a\u540d\u79f0\u5c5e\u6027\u3002 "},
+
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "\u672a\u627e\u5230\u547d\u540d\u7684\u6a21\u677f\uff1a {0}"},
+
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "\u65e0\u6cd5\u5728  xsl:call-template \u89e3\u6790\u540d\u79f0  AVI\u3002 "},
+
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+
+  {
+    ER_REQUIRES_ATTRIB, "{0} \u8981\u6c42\u5c5e\u6027\uff1a {1}"},
+
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} \u5fc5\u987b\u5177\u6709\u4e00\u4e2a  ''test'' \u5c5e\u6027\u3002 "},
+
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "\u5728\u7ea7\u522b\u5c5e\u6027\u4e2d\u51fa\u73b0\u9519\u8bef\u6570\u503c\uff1a {0}"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "processing-instruction \u540d\u79f0\u4e0d\u80fd\u4e3a  'xml'"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "processing-instruction \u540d\u79f0\u5fc5\u987b\u662f\u4e00\u4e2a\u6709\u6548\u7684  NCName\uff1a {0}"},
+
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "{0} \u5fc5\u987b\u5177\u6709\u4e00\u4e2a\u4e0e\u6a21\u5f0f\u76f8\u5339\u914d\u7684\u5c5e\u6027\u3002 "},
+
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} \u9700\u8981\u4e00\u4e2a\u540d\u79f0\u6216\u5339\u914d\u5c5e\u6027\u3002 "},
+
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "\u65e0\u6cd5\u89e3\u6790\u540d\u79f0\u7a7a\u95f4\u524d\u7f00\uff1a {0}"},
+
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space \u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u6570\u503c\uff1a {0}"},
+
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+
+  {
+    ER_NO_OWNERDOC,
+      "\u5b50\u8282\u70b9\u6ca1\u6709\u4e00\u4e2a\u5c5e\u4e3b\u6587\u6863\uff01 "},
+
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "ElemTemplateElement \u9519\u8bef\uff1a {0}"},
+
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+
+  {
+    ER_NULL_CHILD, "\u6b63\u5728\u5c1d\u8bd5\u6dfb\u52a0\u4e00\u4e2a\u7a7a\u7684\u5b50\u8282\u70b9\uff01 "},
+
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0} \u9700\u8981\u4e00\u4e2a\u9009\u62e9\u5c5e\u6027\u3002 "},
+
+
+  /** ER_NEED_TEST_ATTRIB          */
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when \u5fc5\u987b\u5177\u6709\u4e00\u4e2a  'test' \u5c5e\u6027\u3002 "},
+
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param \u5fc5\u987b\u5177\u6709\u4e00\u4e2a  'name' \u5c5e\u6027\u3002 "},
+
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "\u4e0a\u4e0b\u6587\u6ca1\u6709\u4e00\u4e2a\u5c5e\u4e3b\u6587\u6863\uff01 "},
+
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "\u65e0\u6cd5\u521b\u5efa  XML TransformerFactory Liaison\uff1a {0}"},
+
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: \u8fd0\u884c\u4e0d\u6210\u529f\u3002 "},
+
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan: \u4e0d\u6210\u529f\u3002 "},
+
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "\u4e0d\u53d7\u652f\u6301\u7684\u7f16\u7801\uff1a {0}"},
+
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "\u65e0\u6cd5\u521b\u5efa  TraceListener\uff1a {0}"},
+
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key \u9700\u8981\u4e00\u4e2a  'name' \u5c5e\u6027\uff01 "},
+
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key \u9700\u8981\u4e00\u4e2a  'match' \u5c5e\u6027\uff01 "},
+
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key \u9700\u8981\u4e00\u4e2a  'use' \u5c5e\u6027\uff01 "},
+
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} \u9700\u8981\u4e00\u4e2a  ''elements'' \u5c5e\u6027\uff01 "},
+
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} \u7f3a\u5c11  ''prefix'' \u5c5e\u6027 "},
+
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+
+  {
+    ER_BAD_STYLESHEET_URL, "\u5f0f\u6837\u8868\u5355\u7684  URL \u9519\u8bef\uff1a {0}"},
+
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+
+  {
+    ER_FILE_NOT_FOUND, "\u672a\u627e\u5230\u5f0f\u6837\u8868\u5355\u6587\u4ef6\uff1a {0}"},
+
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+
+  {
+    ER_IOEXCEPTION,
+      "\u5f0f\u6837\u8868\u5355\u6587\u4ef6\u4e2d\u5b58\u5728  IO \u5f02\u5e38\uff1a {0}"},
+
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) \u65e0\u6cd5\u5728  {0} \u4e2d\u627e\u5230  href \u5c5e\u6027  "},
+
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} \u76f4\u63a5\u6216\u95f4\u63a5\u5305\u542b\u81ea\u8eab\uff01 "},
+
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude \u9519\u8bef\uff0c {0}"},
+
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} \u7f3a\u5c11  ''lang'' \u5c5e\u6027 "},
+
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) \u5c06  {0} \u5143\u7d20\u653e\u9519\u4f4d\u7f6e\uff1f\uff1f container \u7f3a\u5c11  ''component'' \u5143\u7d20  "},
+
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "\u4ec5\u80fd\u8f93\u51fa\u5230  Element\u3001 DocumentFragment\u3001 Document \u6216  PrintWriter\u3002 "},
+
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+
+  {
+    ER_PROCESS_ERROR, "StylesheetRoot.process \u9519\u8bef "},
+
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+
+  {
+    ER_UNIMPLNODE_ERROR, "UnImplNode \u9519\u8bef\uff1a {0}"},
+
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "\u9519\u8bef\uff01\u672a\u627e\u5230  xpath \u9009\u62e9\u8868\u8fbe\u5f0f  (-select)\u3002 "},
+
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "\u65e0\u6cd5\u4e32\u884c\u5316\u4e00\u4e2a  XSLProcessor\uff01 "},
+
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "\u672a\u6307\u5b9a\u5f0f\u6837\u8868\u5355\u8f93\u5165\uff01 "},
+
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "\u8fd0\u884c\u5f0f\u6837\u8868\u5355\u9519\u8bef\uff01 "},
+
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+
+  {
+    ER_COULDNT_PARSE_DOC, "\u65e0\u6cd5\u5206\u6790  {0} \u6587\u6863\uff01 "},
+
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "\u672a\u627e\u5230\u6bb5\uff1a {0}"},
+
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "\u6bb5\u6807\u8bc6\u7b26\u6307\u5411\u7684\u8282\u70b9\u4e0d\u662f\u4e00\u4e2a\u5143\u7d20\uff1a {0}"},
+
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "\u6bcf\u4e2a\u8282\u70b9\u5fc5\u987b\u5177\u6709\u4e00\u4e2a\u5339\u914d\u6216\u540d\u79f0\u5c5e\u6027 "},
+
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "\u6a21\u677f\u5fc5\u987b\u5177\u6709\u4e00\u4e2a\u5339\u914d\u6216\u540d\u79f0\u5c5e\u6027 "},
+
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "\u65e0\u6cd5\u590d\u5236\u6587\u6863\u6846\u67b6\uff01 "},
+
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "\u65e0\u6cd5\u5728\u7ed3\u679c\u6811\u4e2d\u521b\u5efa\u9879\uff1a {0}"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "xml:space \u5728\u6e90  XML \u4e2d\u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u6570\u503c\uff1a {0}"},
+
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "\u5728  {0} \u4e2d\u672a\u58f0\u660e  xsl:key\uff01 "},
+
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+
+  {
+    ER_CANT_CREATE_URL, "\u9519\u8bef\uff01\u65e0\u6cd5\u5728\u4ee5\u4e0b\u7684  {0} \u4e2d\u521b\u5efa  url\uff1a "},
+
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "\u4e0d\u652f\u6301  xsl:functions"},
+
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+
+  {
+    ER_PROCESSOR_ERROR, "XSLT TransformerFactory \u9519\u8bef "},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "\u4e0d\u5141\u8bb8  (StylesheetHandler) {0} \u5728  stylesheet \u7684\u5185\u90e8\uff01 "},
+
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "\u4e0d\u518d\u652f\u6301  result-ns\uff01\u8bf7\u4f7f\u7528  xsl:output \u66ff\u6362\u3002 "},
+
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "\u4e0d\u518d\u652f\u6301  default-space\uff01\u8bf7\u4f7f\u7528  xsl:strip-space \u6216  xsl:preserve-space \u66ff\u6362\u3002 "},
+
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "\u4e0d\u518d\u652f\u6301  indent-result\uff01\u8bf7\u4f7f\u7528  xsl:output \u66ff\u6362\u3002 "},
+
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} \u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u5c5e\u6027\uff1a {1}"},
+
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "\u672a\u77e5\u7684  XSL \u5143\u7d20\uff1a {0}"},
+
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort \u4ec5\u80fd\u4e0e  xsl:apply-templates \u6216  xsl:for-each \u4e00\u8d77\u4f7f\u7528\u3002 "},
+
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) \u5c06  xsl:when \u653e\u9519\u4f4d\u7f6e\uff01 "},
+
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when \u4e0d\u662f  xsl:choose \u7684\u7236\u8f88\uff01 "},
+
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) \u5c06  xsl:otherwise \u653e\u9519\u4f4d\u7f6e\uff01 "},
+
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise \u4e0d\u662f  xsl:choose \u7684\u7236\u8f88\uff01 "},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "\u4e0d\u5141\u8bb8  (StylesheetHandler) {0} \u5728\u6a21\u677f\u7684\u5185\u90e8\uff01 "},
+
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} \u6269\u5c55\u540d\u79f0\u7a7a\u95f4\u524d\u7f00  {1} \u672a\u77e5 "},
+
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) \u5bfc\u5165\u4ec5\u80fd\u5728\u5f0f\u6837\u8868\u5355\u4e2d\u4f5c\u4e3a\u7b2c\u4e00\u4e2a\u5143\u7d20\u51fa\u73b0\uff01 "},
+
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} \u76f4\u63a5\u6216\u95f4\u63a5\u8f93\u5165\u81ea\u8eab\uff01 "},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space \u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u6570\u503c\uff1a {0}"},
+
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet \u4e0d\u6210\u529f\uff01 "},
+
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+
+  {
+    ER_SAX_EXCEPTION, "SAX \u5f02\u5e38 "},
+
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "\u51fd\u6570\u4e0d\u53d7\u652f\u6301\uff01 "},
+
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+
+  {
+    ER_XSLT_ERROR, "XSLT \u9519\u8bef "},
+
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "\u5728\u683c\u5f0f\u6a21\u5f0f\u5b57\u7b26\u4e32\u4e2d\u4e0d\u5141\u8bb8\u51fa\u73b0\u8d27\u5e01\u7b26\u53f7 "},
+
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "\u5728  Stylesheet DOM \u4e2d\u4e0d\u652f\u6301\u6587\u6863\u51fd\u6570\uff01 "},
+
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "\u65e0\u6cd5\u5206\u6790\u65e0\u524d\u7f00\u5206\u6790\u5668\u7684\u524d\u7f00\uff01 "},
+
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "\u91cd\u5b9a\u5411\u6269\u5c55\uff1a\u65e0\u6cd5\u5f97\u5230\u6587\u4ef6  - \u6587\u4ef6\u6216\u9009\u62e9\u5c5e\u6027\u5fc5\u987b\u8fd4\u56de\u6709\u6548\u7684\u5b57\u7b26\u4e32\u3002 "},
+
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "\u65e0\u6cd5\u5728\u91cd\u5b9a\u5411\u6269\u5c55\u4e2d\u6784\u5efa  FormatterListener\uff01 "},
+
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "\u5728  exclude-result-prefixes \u4e2d\u7684\u524d\u7f00\u4e0d\u662f\u6709\u6548\u7684\uff1a {0}"},
+
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+
+  {
+    ER_MISSING_NS_URI,
+      "\u5728\u6307\u5b9a\u7684\u524d\u7f00\u4e2d\u7f3a\u5c11  URI \u7684\u540d\u79f0\u7a7a\u95f4 "},
+
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "\u5728\u9009\u9879  {0} \u4e2d\u7f3a\u5c11\u53c2\u6570\uff1a "},
+
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+
+  {
+    ER_INVALID_OPTION, "\u65e0\u6548\u7684\u9009\u9879\uff1a {0}"},
+
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "\u683c\u5f0f\u4e0d\u6b63\u786e\u7684\u5b57\u7b26\u4e32\uff1a {0}"},
+
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet \u9700\u8981\u4e00\u4e2a  'version' \u5c5e\u6027\uff01 "},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "\u5c5e\u6027\uff1a {0} \u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u6570\u503c\uff1a {1}"},
+
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose \u9700\u8981  xsl:when"},
+
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "\u4e0d\u5141\u8bb8\u5728  xls:for-each \u4e2d\u51fa\u73b0  xsl:apply-imports"},
+
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "\u65e0\u6cd5\u4e3a\u4e00\u4e2a\u8f93\u51fa  DOM \u8282\u70b9\u4f7f\u7528  DTMLiaison...\u4f20\u9001\u4e00\u4e2a  org.apache.xpath.DOM2Helper\uff01  "},
+
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "\u65e0\u6cd5\u4e3a\u8f93\u5165  DOM \u8282\u70b9\u4f7f\u7528  DTMLiaison...\u4f20\u9001\u4e00\u4e2a  org.apache.xpath.DOM2Helper\uff01 "},
+
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "\u8c03\u7528\u6269\u5c55\u5143\u7d20\u9519\u8bef\uff1a {0}"},
+
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\u5fc5\u987b\u5c06\u524d\u7f00\u89e3\u6790\u4e3a\u540d\u79f0\u7a7a\u95f4\uff1a {0}"},
+
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\u68c0\u6d4b\u5230\u65e0\u6548\u7684  UTF-16 \u4ee3\u7406\uff1a {0}\uff1f  "},
+
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} \u88ab\u81ea\u8eab\u4f7f\u7528\uff0c\u5c06\u5bfc\u81f4\u65e0\u9650\u5faa\u73af\u3002  "},
+
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "\u975e  Xerces-DOM \u8f93\u5165\u4e0e  Xerces-DOM \u8f93\u51fa\u4e0d\u80fd\u6df7\u5408\u4f7f\u7528\uff01 "},
+
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "\u5728  ElemTemplateElement.readObject \u4e2d\uff1a {0}"},
+
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "\u627e\u5230\u591a\u4e2a\u547d\u540d\u7684\u6a21\u677f\uff1a {0}"},
+
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+
+  {
+    ER_INVALID_KEY_CALL,
+      "\u65e0\u6548\u7684\u51fd\u6570\u8c03\u7528\uff1a\u4e0d\u5141\u8bb8\u8c03\u7528\u9012\u5f52\u5173\u952e\u8bcd ()"},
+
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+
+  {
+    ER_REFERENCING_ITSELF,
+      "\u53d8\u91cf  {0} \u6b63\u5728\u76f4\u63a5\u6216\u95f4\u63a5\u5730\u5f15\u7528\u81ea\u8eab\uff01 "},
+
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "\u5728  newTemplate \u7684  DOMSource \u4e2d\uff0c\u8f93\u5165\u8282\u70b9\u4e0d\u80fd\u4e3a\u7a7a\uff01  "},
+
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"\u5728\u9009\u9879\u4e2d\u672a\u627e\u5230\u7c7b\u6587\u4ef6 {0}"},
+
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"\u672a\u627e\u5230\u9700\u8981\u7684\u5143\u7d20\uff1a {0}"},
+
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream \u4e0d\u80fd\u4e3a\u7a7a "},
+
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI \u4e0d\u80fd\u4e3a\u7a7a "},
+
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"File \u4e0d\u80fd\u4e3a\u7a7a "},
+
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource \u4e0d\u80fd\u4e3a\u7a7a "},
+
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"\u65e0\u6cd5\u8986\u5199\u4e8b\u7531 "},
+
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"\u65e0\u6cd5\u521d\u59cb\u5316  BSF \u7ba1\u7406\u5668 "},
+
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"\u65e0\u6cd5\u7f16\u8bd1\u6269\u5c55\u540d "},
+
+  
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "\u7531\u4e8e\u4ee5\u4e0b\u539f\u56e0\uff1a {1}\uff0c\u65e0\u6cd5\u521b\u5efa\u6269\u5c55\u540d\uff1a {0}"},
+
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      " Instance \u8c03\u7528\u65b9\u6cd5  {0} \u65f6\u9700\u8981\u5c06\u5bf9\u8c61\u5b9e\u4f8b\u4f5c\u4e3a\u7b2c\u4e00\u4e2a\u53c2\u6570\u3002 "},
+
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "\u6307\u5b9a\u4e86\u65e0\u6548\u7684\u5143\u7d20\u540d\u79f0  {0}"},
+
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "\u5143\u7d20\u540d\u79f0\u65b9\u6cd5\u5fc5\u987b\u662f\u9759\u6001\u7684  {0}"},
+
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "\u6269\u5c55\u51fd\u6570  {0}\uff1a {1} \u672a\u77e5 "},
+
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "\u9002\u7528\u4e8e  {0} \u7684\u6784\u9020\u5668\u7684\u591a\u4e2a\u6700\u4f73\u5339\u914d  "},
+
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "\u9002\u7528\u4e8e\u65b9\u6cd5  {0} \u7684\u591a\u4e2a\u6700\u4f73\u5339\u914d "},
+
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "\u9002\u7528\u4e8e\u5143\u7d20\u65b9\u6cd5  {0} \u7684\u591a\u4e2a\u6700\u4f73\u5339\u914d "},
+
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "\u4f20\u9001\u65e0\u6548\u7684\u4e0a\u4e0b\u6587\u6765\u6c42\u503c  {0}"},
+
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+
+  {
+    ER_POOL_EXISTS,
+             "\u6c60\u5df2\u5b58\u5728 "},
+
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+
+  {
+    ER_NO_DRIVER_NAME,
+             "\u672a\u6307\u5b9a\u9a71\u52a8\u5668\u540d\u79f0 "},
+
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+
+  {
+    ER_NO_URL,
+             "\u672a\u6307\u5b9a  URL"},
+
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "\u6c60\u7684\u6570\u91cf\u4e0d\u8db3\u4e00\u4e2a\uff01 "},
+
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+
+  {
+    ER_INVALID_DRIVER,
+             "\u6307\u5b9a\u4e86\u65e0\u6548\u7684\u9a71\u52a8\u7a0b\u5e8f\u540d\u79f0\uff01 "},
+
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "\u672a\u627e\u5230\u5f0f\u6837\u8868\u5355\u7684\u6e90\u4f4d\u7f6e\uff01 "},
+
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "\u5728  xml:space \u4e2d\u51fa\u73b0\u975e\u6cd5\u6570\u503c "},
+
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "processFromNode \u5931\u8d25 "},
+
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "[ {0} ] \u8d44\u6e90\u65e0\u6cd5\u88c5\u5165\uff1a {1} \n {2} \t {3}"},
+
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "\u7f13\u51b2\u533a\u5927\u5c0f  <=0"},
+
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "\u8c03\u7528\u6269\u5c55\u65f6\u51fa\u73b0\u672a\u77e5\u9519\u8bef "},
+
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "\u524d\u7f00  {0} \u672a\u58f0\u660e\u76f8\u5e94\u7684\u540d\u79f0\u7a7a\u95f4 "},
+
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "\u5728  lang=javaclass {0} \u4e2d\u4e0d\u5141\u8bb8\u51fa\u73b0\u5143\u7d20\u5185\u5bb9 "},
+   
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "\u6307\u5bfc\u5f0f\u6837\u8868\u5355\u7ec8\u6b62 "},
+
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+
+  {
+    ER_ONE_OR_TWO,
+        "1 \u6216  2"},
+
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+
+  {
+    ER_TWO_OR_THREE,
+        "2 \u6216  3"},
+
+  
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "\u65e0\u6cd5\u88c5\u5165  {0}\uff08\u68c0\u67e5  CLASSPATH\uff09\uff0c\u6b63\u5728\u4f7f\u7528\u7f3a\u7701\u503c "},
+
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "\u65e0\u6cd5\u521d\u59cb\u5316\u7f3a\u7701\u6a21\u677f "},
+
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+
+  {
+    ER_RESULT_NULL,
+        "\u7ed3\u679c\u4e0d\u5e94\u4e3a\u7a7a "},
+
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "\u65e0\u6cd5\u8bbe\u7f6e\u7ed3\u679c "},
+
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "\u672a\u6307\u5b9a\u8f93\u51fa "},
+
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "\u65e0\u6cd5\u53d8\u6362\u5230\u4e00\u4e2a\u7c7b\u578b\u7684\u7ed3\u679c\u4e2d  {0}"},
+
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "\u65e0\u6cd5\u53d8\u6362\u4e00\u4e2a\u7c7b\u578b\u6e90  {0}"},
+
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "\u7a7a\u7684\u5185\u5bb9\u53e5\u67c4 "},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "\u7a7a\u7684\u9519\u8bef\u53e5\u67c4 "},
+
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "\u5982\u679c\u672a\u8bbe\u7f6e  ContentHandler\uff0c\u5219\u65e0\u6cd5\u8c03\u7528\u89e3\u6790 "},
+
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "\u5728\u8fc7\u6ee4\u5668\u4e2d\u65e0\u7236\u8f88 "},
+
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "\u5728  {0}\uff0c media= {1} \u4e2d\u672a\u627e\u5230\u5f0f\u6837\u8868\u5355  "},
+
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "\u5728  {0} \u4e2d\u672a\u627e\u5230  xml-stylesheet PI\uff1a  "},
+
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "\u672a\u627e\u5230\u7f3a\u7701\u6267\u884c  "},
+
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "\u76ee\u524d\u4e0d\u652f\u6301  ChunkedIntArray({0}) "},
+
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "\u504f\u79fb\u6bd4\u69fd\u7565\u5927 "},
+
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "\u534f\u540c\u7a0b\u5e8f\u4e0d\u53ef\u7528\uff0c id={0}"},
+
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager \u63a5\u6536\u5230  co_exit() \u8bf7\u6c42 "},
+
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet() \u5931\u8d25 "},
+
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+
+  {
+    ER_COROUTINE_PARAM,
+       "\u534f\u540c\u7a0b\u5e8f\u53c2\u6570\u9519\u8bef  ({0})"},
+
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: \u5206\u6790\u5668  doTerminate \u56de\u7b54  {0}"},
+
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "\u5f53\u5206\u6790\u65f6\u53ef\u80fd\u4e0d\u4f1a\u8c03\u7528\u5206\u6790\u51fd\u6570 "},
+
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\u9519\u8bef\uff1a\u5728  axis {0} \u4e2d\u8f93\u5165\u7684\u8fed\u4ee3\u7a0b\u5e8f\u65e0\u6cd5\u6267\u884c "},
+
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\u9519\u8bef\uff1a\u5728  axis {0} \u4e2d\u7684\u8fed\u4ee3\u7a0b\u5e8f\u65e0\u6cd5\u6267\u884c "},
+
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "\u4e0d\u652f\u6301\u590d\u5236\u8fed\u4ee3\u7a0b\u5e8f "},
+
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "\u672a\u77e5\u7684  axis \u904d\u5386\u7c7b\u578b\uff1a {0}"},
+
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "\u4e0d\u652f\u6301  axis \u904d\u5386\u5668\uff1a {0}"},
+
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "\u65e0\u6cd5\u4f7f\u7528\u591a\u4e2a  DTM ID"},
+
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+
+  {
+    ER_NOT_SUPPORTED,
+       "\u4e0d\u652f\u6301\uff1a {0}"},
+
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+
+  {
+    ER_NODE_NON_NULL,
+       "\u8282\u70b9\u5728  getDTMHandleFromNode \u4e2d\u5fc5\u987b\u975e\u7a7a "},
+
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "\u65e0\u6cd5\u5c06\u8282\u70b9\u89e3\u6790\u4e3a\u53e5\u67c4 "},
+
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "\u5728\u5206\u6790\u65f6\u53ef\u80fd\u4f1a\u8c03\u7528  startParse "},
+
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse \u9700\u8981\u4e00\u4e2a\u975e\u7a7a\u7684  SAXParser"},
+
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "\u65e0\u6cd5\u521d\u59cb\u5316\u5206\u6790\u5668 "},
+
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "\u5c5e\u6027\u503c  {0} \u5e94\u5f53\u662f\u4e00\u4e2a\u5e03\u5c14\u5b9e\u4f8b "},
+
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "\u521b\u5efa\u6c60\u7684\u65b0\u5b9e\u4f8b\u65f6\u51fa\u73b0\u5f02\u5e38 "},
+
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "\u8def\u5f84\u5305\u542b\u65e0\u6548\u7684\u6362\u7801\u5e8f\u5217 "},
+
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+
+  {
+    ER_SCHEME_REQUIRED,
+       "\u9700\u8981\u914d\u7f6e\uff01 "},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "\u5728  URI \u4e2d\u672a\u627e\u5230\u914d\u7f6e\uff1a {0}"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+
+  {
+    ER_NO_SCHEME_INURI,
+       "\u5728  URI \u4e2d\u672a\u627e\u5230\u914d\u7f6e "},
+
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "\u8def\u5f84\u5305\u542b\u65e0\u6548\u7684\u5b57\u7b26\uff1a {0}"},
+
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "\u65e0\u6cd5\u5728\u7a7a\u7684\u5b57\u7b26\u4e32\u4e2d\u8bbe\u7f6e\u914d\u7f6e "},
+
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "\u914d\u7f6e\u4e0d\u4e00\u81f4\u3002 "},
+
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "\u4e3b\u673a\u5730\u5740\u7684\u683c\u5f0f\u4e0d\u6b63\u786e "},
+
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "\u5f53\u4e3b\u673a\u4e3a\u7a7a\u65f6\u65e0\u6cd5\u8bbe\u7f6e\u7aef\u53e3 "},
+
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+
+  {
+    ER_INVALID_PORT,
+       "\u65e0\u6548\u7684\u7aef\u53e3\u53f7 "},
+
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "\u4ec5\u5728\u4e00\u822c\u7684  URI \u4e2d\u8bbe\u7f6e\u6bb5 "},
+
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "\u5f53\u8def\u5f84\u4e3a\u7a7a\u65f6\u65e0\u6cd5\u8bbe\u7f6e\u6bb5 "},
+
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "\u6bb5\u4e2d\u5305\u542b\u65e0\u6548\u5b57\u7b26 "},
+
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+
+  {
+    ER_PARSER_IN_USE,
+        "\u5206\u6790\u5668\u6b63\u5728\u4f7f\u7528 "},
+
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "\u5728\u5206\u6790\u65f6\u65e0\u6cd5\u6539\u53d8  {0} {1}"},
+
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "\u4e0d\u5141\u8bb8\u81ea\u8eab\u5f15\u8d77\u7ed3\u679c "},
+
+  
+   /** src attribute not yet supported for  */
+  //public static final int ER_COULD_NOT_FIND_EXTERN_SCRIPT = 195;
+
+
+  {
+    ER_COULD_NOT_FIND_EXTERN_SCRIPT,
+       "\u65e0\u6cd5\u5728  {0} \u4e2d\u5230\u8fbe\u5916\u90e8\u811a\u672c "},
+
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "\u672a\u627e\u5230  [ {0} ] \u8d44\u6e90\u3002 \n {1}"},
+
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "\u65e0\u6cd5\u8bc6\u522b\u8f93\u51fa\u5c5e\u6027\uff1a {0}"},
+
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "\u5982\u679c\u672a\u6307\u5b9a\u4e3b\u673a\uff0c\u53ef\u80fd\u4e0d\u4f1a\u6307\u5b9a\u7528\u6237\u4fe1\u606f "},
+
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "\u5982\u679c\u672a\u6307\u5b9a\u4e3b\u673a\uff0c\u53ef\u80fd\u4e0d\u4f1a\u6307\u5b9a\u7aef\u53e3 "},
+
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "\u5728\u8def\u5f84\u548c\u67e5\u8be2\u5b57\u7b26\u4e32\u4e2d\uff0c\u65e0\u6cd5\u6307\u5b9a\u67e5\u8be2\u5b57\u7b26\u4e32  "},
+
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "\u5728\u8def\u5f84\u548c\u6bb5\u4e2d\u65e0\u6cd5\u6307\u5b9a\u6bb5  "},
+
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "\u65e0\u6cd5\u4f7f\u7528\u7a7a\u7684\u53c2\u6570\u521d\u59cb\u5316  URI"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "\u521b\u5efa  ElemLiteralResult \u5b9e\u4f8b\u5931\u8d25 "},
+  
+  
+   // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+   // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+   //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+   //NOTE: Not only the key name but message has also been changed. 
+
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "{0} \u7684\u503c\u5e94\u8be5\u5305\u542b\u53ef\u5206\u6790\u7684\u6570\u5b57 "},
+
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        "{0} \u7684\u503c\u5e94\u5f53\u662f\u201c\u662f\u201d\u6216\u201c\u975e\u201d "},
+
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        "\u8c03\u7528  {0} \u65b9\u6cd5\u5931\u8d25 "},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "\u521b\u5efa  ElemTemplateElement \u5b9e\u4f8b\u5931\u8d25 "},
+
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "\u5728\u6587\u6863\u6b64\u5904\u4e0d\u5141\u8bb8\u51fa\u73b0\u5b57\u7b26 "},
+
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "\"{0}\" \u5c5e\u6027\u4e0d\u5141\u8bb8\u5728  {1} \u5143\u7d20\u4e2d\u51fa\u73b0\uff01  "},
+
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "\u65b9\u6cd5\u4ecd\u4e0d\u53d7\u652f\u6301  "},
+
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+
+  {
+    ER_BAD_VALUE,
+     "{0} \u9519\u8bef\u6570\u503c  {1} "},
+
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "\u672a\u627e\u5230  {0} \u5c5e\u6027\u503c "},
+
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "\u65e0\u6cd5\u8bc6\u522b  {0} \u5c5e\u6027\u503c "},
+
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "\u5f53\u524d\u65e0\u6cd5\u91cd\u65b0\u542f\u52a8  IncrementalSAXSource_Filter"},
+
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader \u672a\u5728  startParse \u8bf7\u6c42\u4e4b\u524d\u51fa\u73b0 "},
+
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "\u8bd5\u56fe\u7528\u7a7a  URI \u751f\u6210\u540d\u79f0\u7a7a\u95f4\u524d\u7f00 "},
+    
+
+  //XALAN_MANTIS CHANGES: Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "\u8bd5\u56fe\u683c\u5f0f\u5316\u4e00\u4e2a\u8d85\u8fc7\u6700\u5927\u957f\u6574\u578b\u6574\u6570\u7684\u6570 "},
+
+
+//ER_CANNOT_FIND_SAX1_DRIVER
+
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+
+
+  {
+    ER_CANNOT_FIND_SAX1_DRIVER,
+     "\u627e\u4e0d\u5230  SAX1 \u9a71\u52a8\u7a0b\u5e8f\u7c7b  {0}"},
+
+
+//ER_SAX1_DRIVER_NOT_LOADED
+  //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_LOADED,
+     "\u627e\u5230  SAX1 \u9a71\u52a8\u7a0b\u5e8f\u7c7b  {0} \u4f46\u65e0\u6cd5\u52a0\u8f7d "},
+
+
+//ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "\u52a0\u8f7d\u4e86  SAX1 \u9a71\u52a8\u7a0b\u5e8f\u7c7b  {0} \u4f46\u65e0\u6cd5\u5b9e\u4f8b\u5316 "},
+
+
+
+// ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+  //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+     "SAX1 \u9a71\u52a8\u7a0b\u5e8f\u7c7b  {0} \u65e0\u6cd5\u5b9e\u73b0  org.xml.sax.Parser"},
+
+
+// ER_PARSER_PROPERTY_NOT_SPECIFIED
+  //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+
+  {
+    ER_PARSER_PROPERTY_NOT_SPECIFIED,
+     "\u672a\u6307\u5b9a\u7cfb\u7edf\u7279\u6027  org.xml.sax.parser"},
+
+
+//ER_PARSER_ARG_CANNOT_BE_NULL
+  //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+
+  {
+    ER_PARSER_ARG_CANNOT_BE_NULL,
+     "Parser \u53d8\u91cf\u5fc5\u987b\u4e3a\u975e\u7a7a "},
+
+
+
+// ER_FEATURE
+  //public static final int  ER_FEATURE = 224;
+
+
+  {
+    ER_FEATURE,
+     "\u7279\u5f81\uff1a\u4e00\u4e2a  {0}"},
+
+
+
+// ER_PROPERTY
+  //public static final int ER_PROPERTY = 225 ;
+
+
+  {
+    ER_PROPERTY,
+     "\u7279\u6027\uff1a\u4e00\u4e2a  {0}"},
+
+
+// ER_NULL_ENTITY_RESOLVER
+  //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+
+  {
+    ER_NULL_ENTITY_RESOLVER,
+     "\u7a7a\u5b9e\u4f53\u89e3\u6790\u7a0b\u5e8f "},
+
+
+// ER_NULL_DTD_HANDLER
+  //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+
+  {
+    ER_NULL_DTD_HANDLER,
+     "\u7a7a  DTD \u5904\u7406\u7a0b\u5e8f "},
+
+
+// No Driver Name Specified!
+  //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+
+  {
+    ER_NO_DRIVER_NAME_SPECIFIED,
+     "\u672a\u6307\u5b9a\u9a71\u52a8\u7a0b\u5e8f\u540d\u79f0\uff01 "},
+
+
+
+// No URL Specified!
+  //public static final int ER_NO_URL_SPECIFIED = 229;
+
+  {
+    ER_NO_URL_SPECIFIED,
+     "\u672a\u6307\u5b9a  URL\uff01 "},
+
+
+
+// Pool size is less than 1!
+  //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+
+  {
+    ER_POOLSIZE_LESS_THAN_ONE,
+     "\u6c60\u7684\u5927\u5c0f\u5c0f\u4e8e  1\uff01 "},
+
+
+
+// Invalid Driver Name Specified!
+  //public static final int ER_INVALID_DRIVER_NAME = 231;
+
+  {
+    ER_INVALID_DRIVER_NAME,
+     "\u6307\u5b9a\u4e86\u65e0\u6548\u9a71\u52a8\u7a0b\u5e8f\u540d\u79f0\uff01 "},
+
+
+
+
+// ErrorListener
+  //public static final int ER_ERRORLISTENER = 232;
+
+  {
+    ER_ERRORLISTENER,
+     "ErrorListener"},
+
+
+
+// Programmer's error! expr has no ElemTemplateElement parent!
+  //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+
+  {
+    ER_ASSERT_NO_TEMPLATE_PARENT,
+     "\u7a0b\u5e8f\u5458\u9519\u8bef\uff01 expr \u6ca1\u6709  ElemTemplateElement \u7236\u7c7b\uff01 "},
+
+
+
+// Programmer's assertion in RundundentExprEliminator: {0}
+  //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+
+  {
+    ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+     "RundundentExprEliminator \u4e2d\u7684\u7a0b\u5e8f\u5458\u58f0\u660e\uff1a {0}"},
+
+
+// Axis traverser not supported: {0}
+  //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+
+  {
+    ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+     "\u8f74\u904d\u5386\u7a0b\u5e8f\u4e0d\u53d7\u652f\u6301\uff1a {0}"},
+
+
+// ListingErrorHandler created with null PrintWriter!
+  //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+
+  {
+    ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+     "\u7528\u7a7a  PrintWriter \u6765\u521b\u5efa  ListingErrorHandler\uff01 "},
+
+
+  // {0}is not allowed in this position in the stylesheet!
+  //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+
+  {
+    ER_NOT_ALLOWED_IN_POSITION,
+     "\u6837\u5f0f\u8868\u4e2d\u7684\u8fd9\u4e2a\u4f4d\u7f6e\u4e0d\u5141\u8bb8\u51fa\u73b0  {0}\uff01 "},
+
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+  //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+
+  {
+    ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+     "\u6837\u5f0f\u8868\u4e2d\u7684\u8fd9\u4e2a\u4f4d\u7f6e\u4e0d\u5141\u8bb8\u975e\u7a7a\u683c\u6587\u672c\uff01 "},
+
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+  //public static final int INVALID_TCHAR = 239;
+  // SystemId Unknown
+
+  {
+    INVALID_TCHAR,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728  CHAR \u5c5e\u6027  {0} \u4e2d\uff09\u3002 CHAR \u7c7b\u578b\u7684\u5c5e\u6027\u5fc5\u987b\u53ea\u5305\u542b  1 \u4e2a\u5b57\u7b26\uff01 "},
+
+
+  //public static final int ER_SYSTEMID_UNKNOWN = 240;
+
+  {
+    ER_SYSTEMID_UNKNOWN,
+     "\u672a\u77e5\u7684  SystemId"},
+
+
+  // Location of error unknown
+  //public static final int ER_LOCATION_UNKNOWN = 241;
+
+  {
+    ER_LOCATION_UNKNOWN,
+     "\u672a\u77e5\u7684\u9519\u8bef\u4f4d\u7f6e "},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value and {0} is the attribute name.
+    // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+
+  {
+    INVALID_QNAME,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728  QNAME \u5c5e\u6027  {0} \u4e2d\uff09 "},
+
+
+    // Note to translators:  The following message is used if the value of
+    // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+    // the attribute, and should not be translated.  The substitution text {1} is
+    // the attribute value, {0} is the attribute name, and {2} is a list of valid
+    // values.
+    // INVALID_ENUM
+
+  // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+  //public static final int INVALID_ENUM = 243;
+
+  {
+    INVALID_ENUM,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728  ENUM \u5c5e\u6027  {0} \u4e2d\uff09\u3002\u6709\u6548\u503c\u4e3a\uff1a {2}\u3002 "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NMTOKEN
+
+  // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+  //public static final int INVALID_NMTOKEN = 244;
+
+  {
+    INVALID_NMTOKEN,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728  NMTOKEN \u5c5e\u6027  {0} \u4e2d\uff09  "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+
+  {
+    INVALID_NCNAME,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728  NCNAME \u5c5e\u6027  {0} \u4e2d\uff09  "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_BOOLEAN
+
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+
+  {
+    INVALID_BOOLEAN,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728\u5e03\u5c14\u5c5e\u6027  {0} \u4e2d\uff09  "},
+
+
+// Note to translators:  The following message is used if the value of
+// an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+// of the attribute, and should not be translated.  The substitution text {1} is
+// the attribute value and {0} is the attribute name.
+// INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+
+  {
+    INVALID_NUMBER,
+     "\u4f7f\u7528\u4e86\u975e\u6cd5\u503c\uff1a {1}\uff08\u5728\u6570\u5b57\u5c5e\u6027  {0} \u4e2d\uff09  "},
+
+
+
+  // End of shared codes...
+
+// Note to translators:  A "match pattern" is a special form of XPath expression
+// that is used for matching patterns.  The substitution text is the name of
+// a function.  The message indicates that when this function is referenced in
+// a match pattern, its argument must be a string literal (or constant.)
+// ER_ARG_LITERAL - new error message for bugzilla //5202
+
+  // Argument to {0} in match pattern must be a literal.
+  //public static final int ER_ARG_LITERAL             = 248;
+
+  {
+    ER_ARG_LITERAL,
+     "\u5339\u914d\u6a21\u5f0f\u4e2d\u7684  {0} \u53d8\u91cf\u5fc5\u987b\u662f\u6587\u5b57\u3002 "},
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable.  A "global variable" is a variable that is accessible everywher
+// in the stylesheet.
+// ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+  // Duplicate global variable declaration.
+  //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+
+  {
+    ER_DUPLICATE_GLOBAL_VAR,
+     "\u91cd\u590d\u7684\u5168\u5c40\u53d8\u91cf\u58f0\u660e\u3002 "},
+
+
+
+// Note to translators:  The following message indicates that two definitions of
+// a variable were encountered.
+// ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+  // Duplicate variable declaration.
+  //public static final int ER_DUPLICATE_VAR           = 250;
+
+  {
+    ER_DUPLICATE_VAR,
+     "\u91cd\u590d\u7684\u53d8\u91cf\u58f0\u660e\u3002 "},
+
+
+    // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+    // which must not be translated.
+    // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "xsl:template \u5fc5\u987b\u5177\u6709\u540d\u79f0\u6216\u5339\u914d\u7684\u5c5e\u6027\uff08\u6216\u540c\u65f6\u5177\u6709\u4e24\u8005\uff09 "},
+
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+  // Prefix in exclude-result-prefixes is not valid:a {0}
+  //public static final int ER_INVALID_PREFIX          = 252;
+
+  {
+    ER_INVALID_PREFIX,
+     "exclude-result-prefixes \u4e2d\u7684\u524d\u7f00\u65e0\u6548\uff1a {0}"},
+
+
+    // Note to translators:  An "attribute set" is a set of attributes that can be
+    // added to an element in the output document as a group.  The message indicates
+    // that there was a reference to an attribute set named {0} that was never
+    // defined.
+    // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+  // attribute-set named {0} does not exist
+  //public static final int ER_NO_ATTRIB_SET           = 253;
+
+  {
+    ER_NO_ATTRIB_SET,
+     "\u4e0d\u5b58\u5728\u540d\u4e3a  {0} \u7684  attribute-set"},
+
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "\u5df2\u627e\u5230  '}'\uff0c\u4f46\u672a\u6253\u5f00\u5c5e\u6027\u6a21\u677f\uff01 "},
+
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "\u8b66\u544a\uff1a ''count'' \u5c5e\u6027\u4e0e  xsl:number! Target = {0} \u4e2d\u7684\u7956\u5148\u4e0d\u5339\u914d "},
+
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "\u65e7\u8bed\u6cd5\uff1a 'expr' \u5c5e\u6027\u7684\u540d\u79f0\u5df2\u7ecf\u53d8\u4e3a  'select'\u3002 "},
+
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      " Xalan \u4ecd\u7136\u65e0\u6cd5\u5904\u7406  format-number \u51fd\u6570\u4e2d\u7684\u8bed\u8a00\u73af\u5883\u540d\u79f0\u3002 "},
+
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "\u8b66\u544a\uff1a\u65e0\u6cd5\u627e\u5230  xml:lang={0} \u4e2d\u7684\u8bed\u8a00\u73af\u5883  "},
+
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "\u4ece  {0} \u4e2d\u65e0\u6cd5\u4ea7\u751f  URL\uff1a  "},
+
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "\u65e0\u6cd5\u88c5\u5165\u8bf7\u6c42\u6587\u6863\uff1a {0}"},
+
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "\u5728  <sort xml:lang={0} \u4e2d\u65e0\u6cd5\u627e\u5230\u6574\u7406\u673a  "},
+
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "\u65e7\u8bed\u6cd5\uff1a\u51fd\u6570\u6307\u4ee4\u5e94\u5f53\u4f7f\u7528  {0} \u7684\u4e00\u4e2a  URL "},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "\u4e0d\u53d7\u652f\u6301\u7684\u7f16\u7801\uff1a {0}\uff0c\u6b63\u5728\u4f7f\u7528  UTF-8"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "\u4e0d\u53d7\u652f\u6301\u7684\u7f16\u7801\uff1a {0}\uff0c\u6b63\u5728  Java {1}"},
+
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "\u53d1\u73b0\u4e13\u4e00\u6027\u51b2\u7a81\uff1a {0} \u5c06\u4f7f\u7528\u4e0a\u6b21\u5728\u5f0f\u6837\u8868\u5355\u4e2d\u627e\u5230\u7684\u7f16\u7801\u3002 "},
+
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= \u5206\u6790\u548c\u51c6\u5907  {0} =========="},
+
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+
+  {
+    WG_ATTR_TEMPLATE, "\u5c5e\u6027\u6a21\u677f\uff0c {0}"},
+
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "\u5728  xsl:strip-space \u548c  xsl:preserve-space \u4e4b\u95f4\u51fa\u73b0\u5339\u914d\u51b2\u7a81  "},
+
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan \u4ecd\u4e0d\u5904\u7406  {0} \u5c5e\u6027\uff01 "},
+
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "\u672a\u627e\u5230\u5341\u8fdb\u5236\u683c\u5f0f\u7684\u58f0\u660e\uff1a {0}"},
+
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+
+  {
+    WG_OLD_XSLT_NS, "\u7f3a\u5c11\u6216\u4e0d\u6b63\u786e\u7684  XSLT Namespace\u3002  "},
+
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "\u4ec5\u5141\u8bb8\u58f0\u660e\u4e00\u4e2a\u7f3a\u7701  xsl:decimal-format\u3002  "},
+
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-format \u7684\u540d\u79f0\u5fc5\u987b\u662f\u552f\u4e00\u7684\u3002\u540d\u79f0  \"{0}\" \u5df2\u590d\u5236\u3002 "},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} \u5b58\u5728\u4e00\u4e2a\u975e\u6cd5\u5c5e\u6027\uff1a {1}"},
+
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "\u65e0\u6cd5\u89e3\u6790\u540d\u79f0\u7a7a\u95f4\u524d\u7f00\uff1a {0}\u3002\u5ffd\u7565\u8282\u70b9\u3002 "},
+
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet \u9700\u8981  'version' \u5c5e\u6027\uff01 "},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "\u975e\u6cd5\u5c5e\u6027\u540d\u79f0\uff1a {0}"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "\u5728\u5c5e\u6027\u4e2d\u4f7f\u7528\u975e\u6cd5\u6570\u503c  {0}\uff1a {1}"},
+
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "\u6765\u81ea\u6587\u6863\u5c5e\u6027\u7b2c\u4e8c\u4e2a\u53c2\u6570\u7684\u7ed3\u679c\u8282\u70b9\u96c6\u4e3a\u7a7a\u3002\u5c06\u4f7f\u7528\u7b2c\u4e00\u4e2a\u53c2\u6570\u3002 "},
+
+
+  //XALAN_MANTIS CHANGES: Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "xsl:processing-instruction \u540d\u79f0\u7684  'name' \u5c5e\u6027\u503c\u4e0d\u80fd\u4e3a  'xml'"},
+
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "xsl:processing-instruction \u7684  ''name'' \u5c5e\u6027\u503c\u5fc5\u987b\u662f\u4e00\u4e2a\u6709\u6548\u7684  NCName:a {0}"},
+
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+      "\u65e0\u6cd5\u5728\u5df2\u7ecf\u751f\u6210\u5b50\u8282\u70b9\u4e4b\u540e\u6216\u5728\u5c1a\u672a\u751f\u6210\u5143\u7d20\u4e4b\u524d\u6dfb\u52a0\u5c5e\u6027  {0}\u3002\u5c5e\u6027\u5c06\u88ab\u5ffd\u7565\u3002 "},
+
+
+    //XALAN_MANTIS CHANGES: WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "zh"},
+  { "help_language", "zh"},
+  { "language", "zh"},
+    { "BAD_CODE",
+      "createMessage \u53c2\u6570\u8d85\u8fc7\u8303\u56f4 "},
+    { "FORMAT_FAILED",
+      "\u8c03\u7528  messageFormat \u65f6\u51fa\u73b0\u610f\u5916\u60c5\u51b5   "},
+    { "version", ">>>>>>> Xalan \u7248\u672c  "},
+    { "version2", "<<<<<<<"},
+    { "yes", "\u662f "},
+    { "line", "\u884c  #"},
+    { "column", "\u5217  #"},
+    { "xsldone", "XSLProcessor: done"},
+    { "xslProc_option",
+    "Xalan-J \u547d\u4ee4\u884c\u8fd0\u884c\u7c7b\u9009\u9879\uff1a "},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT", "   [-OUT outputFileName]"},
+    { "optionLXCIN",
+      "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT",
+      "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER",
+      "   [-PARSER \u5b8c\u5168\u7b26\u5408\u5206\u6790\u8054\u7edc\u7684\u7c7b\u540d\u79f0 ]"},
+    { "optionE",
+    "   [-E\uff08\u4e0d\u6269\u5c55\u5b9e\u4f53\u5f15\u7528\uff09 ]"},
+    { "optionV",
+    "   [-E\uff08\u4e0d\u6269\u5c55\u5b9e\u4f53\u5f15\u7528\uff09 ]"},
+    { "optionQC",
+      "   [-QC\uff08\u9759\u6b62\u6a21\u5f0f\u51b2\u7a81\u8b66\u544a\uff09 ]"},
+    { "optionQ", "   [-Q\uff08\u9759\u6b62\u6a21\u5f0f\uff09 ]"},
+    { "optionLF",
+      "   [-LF\uff08\u4ec5\u5728\u8f93\u51fa\u65f6\u4f7f\u7528\u6362\u884c  {\u7f3a\u7701\u4e3a  CR/LF}\uff09 ]"},
+    { "optionCR",
+      "   [-CR\uff08\u4ec5\u5728\u8f93\u51fa\u65f6\u4f7f\u7528\u6362\u884c  {\u7f3a\u7701\u4e3a  CR/LF}\uff09 ]"},
+    { "optionESCAPE",
+      "   [-ESCAPE\uff08\u907f\u514d\u4f7f\u7528\u7684\u5b57\u7b26  {\u7f3a\u7701\u662f  <>&\"\'\\r\\n}\uff09 ]"},
+    { "optionINDENT",
+      "   [-INDENT\uff08\u63a7\u5236\u7f29\u8fdb\u7a7a\u683c\u7684\u6570\u91cf  {\u7f3a\u7701\u662f  0}\uff09 ]"},
+    { "optionTT",
+      "   [-TT\uff08\u8ddf\u8e2a\u8c03\u7528\u7684\u6a21\u677f\u3002\uff09 ]"},
+    { "optionTG",
+      "   [-TG\uff08\u8ddf\u8e2a\u53d1\u751f\u4e8b\u4ef6\u3002\uff09 ]"},
+    { "optionTS",
+    "   [-TS\uff08\u8ddf\u8e2a\u6bcf\u4e2a\u9009\u4e2d\u4e8b\u4ef6\u3002\uff09 ]"},
+    { "optionTTC",
+      "   [-TTC\uff08\u8ddf\u8e2a\u8fd0\u884c\u7684\u5b50\u6a21\u677f\u3002\uff09 ]"},
+    { "optionTCLASS",
+      "   [-TCLASS\uff08\u7528\u4e8e\u8ddf\u8e2a\u6269\u5c55\u540d\u7684  TraceListener \u7c7b\u3002\uff09 ]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE\uff08\u8bbe\u7f6e\u662f\u5426\u201c\u786e\u8ba4\u201d\u3002\u7f3a\u7701\u60c5\u51b5\u4e0b\u5173\u95ed\u201c\u786e\u8ba4\u201d\u3002\uff09 ]"},
+    { "optionEDUMP",
+      "   [-EDUMP {\u53ef\u9009\u6587\u4ef6\u540d }\uff08\u51fa\u73b0\u9519\u8bef\u65f6\u786e\u4fdd\u6808\u8f6c\u50a8\u3002\uff09 ]"},
+    { "optionXML",
+      "   [-XML (\u4f7f\u7528  XML \u683c\u5f0f\u6807\u8bc6\u7b26\u5e76\u6dfb\u52a0  XML \u5934\u3002\uff09 ]"},
+    { "optionTEXT",
+      "   [-TEXT\uff08\u4f7f\u7528\u7b80\u5355\u7684  Text \u683c\u5f0f\u6807\u8bc6\u7b26\u3002\uff09 ]"},
+    { "optionHTML",
+    "   [-HTML\uff08\u4f7f\u7528  HTML \u683c\u5f0f\u6807\u8bc6\u7b26\u3002\uff09 ]"},
+    { "optionPARAM",
+      "   [-PARAM \u540d\u79f0\u6269\u5c55\uff08\u8bbe\u7f6e\u4e00\u4e2a  stylesheet \u53c2\u6570\uff09 ]"},
+    { "noParsermsg1",
+    "XSL \u8fd0\u884c\u4e0d\u6210\u529f\u3002  "},
+    { "noParsermsg2",
+    "** \u672a\u627e\u5230\u5206\u6790\u5668  **"},
+    { "noParsermsg3",
+    "\u8bf7\u68c0\u67e5\u60a8\u7684\u7c7b\u8def\u5f84\u3002 "},
+    { "noParsermsg4",
+      "\u5982\u679c\u60a8\u6ca1\u6709  IBM \u7528\u4e8e  Java \u7684  XML \u5206\u6790\u5668\uff0c\u60a8\u53ef\u4ece "},
+    { "noParsermsg5",
+      "IBM AlphaWorks\uff1a http://www.alphaworks.ibm.com/formula/xml \u4e0b\u8f7d\u3002 "},
+    { "optionURIRESOLVER",
+    "   [-URIRESOLVER \u5168\u7c7b\u540d\uff08 URIResolver \u7528\u4e8e\u5206\u6790  URI\uff09 ]"},
+    { "optionENTITYRESOLVER",
+    "   [-ENTITYRESOLVER \u5168\u7c7b\u540d\uff08 EntityResolver \u7528\u4e8e\u5206\u6790\u5b9e\u4f53\uff09 ] "},
+    {  "optionCONTENTHANDLER",
+    "   [-CONTENTHANDLER \u5168\u7c7b\u540d\uff08 ContentHandler \u7528\u4e8e\u4e32\u884c\u5316\u8f93\u51fa\uff09 ]"},
+    { "optionLINENUMBERS",
+    "   [-L \u4f7f\u7528\u6e90\u6587\u6863\u7684\u884c\u53f7 ]"},
+		
+    //XALAN_MANTIS CHANGES: Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+    " [-MEDIA \u5a92\u4f53\u7c7b\u578b\uff08\u4f7f\u7528\u5a92\u4f53\u5c5e\u6027\u67e5\u627e\u4e0e\u67d0\u4e2a\u6587\u6863\u5173\u8054\u7684\u6837\u5f0f\u8868\u3002\uff09 ]"},
+    { "optionFLAVOR",
+    " [-FLAVOR \u98ce\u683c\u540d\u79f0\uff08\u660e\u786e\u4f7f\u7528  s2s=SAX \u6216  d2d=DOM \u8fdb\u884c\u53d8\u6362\u3002\uff09 ] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+    " [-DIAG\uff08\u6253\u5370\u53d8\u6362\u6240\u82b1\u7684\u603b\u6beb\u79d2\u6570\u3002\uff09 ]"},
+    { "optionINCREMENTAL",
+    " [-INCREMENTAL\uff08\u901a\u8fc7\u5c06  http://xml.apache.org/xalan/features/incremental \u8bbe\u7f6e\u4e3a  true \u6765\u8bf7\u6c42\u589e\u91cf\u5f0f  DTM \u6784\u9020\u3002\uff09 ]"},
+    { "optionNOOPTIMIMIZE",
+    " [-NOOPTIMIMIZE\uff08\u901a\u8fc7\u5c06  http://xml.apache.org/xalan/features/optimize \u8bbe\u7f6e\u4e3a  false \u6765\u8bf7\u6c42\u65e0\u6837\u5f0f\u8868\u4f18\u5316\u5904\u7406\u3002\uff09 ]"},
+    { "optionRL",
+    " [-RL \u9012\u5f52\u9650\u5236\uff08\u58f0\u660e\u6837\u5f0f\u8868\u9012\u5f52\u6df1\u5ea6\u7684\u6570\u5b57\u9650\u5236\u3002\uff09 ]"},
+    { "optionXO",
+    " [-XO [translet \u540d ]\uff08\u6307\u5b9a\u751f\u6210\u7684  translet \u7684\u540d\u79f0\uff09 ]"},
+    { "optionXD",
+    " [-XD \u76ee\u6807\u76ee\u5f55\uff08\u6307\u5b9a  translet \u7684\u76ee\u6807\u76ee\u5f55\uff09 ]"},
+    { "optionXJ",
+    " [-XJ jar \u6587\u4ef6\uff08\u5c06  translet \u7c7b\u5c01\u88c5\u6210\u540d\u79f0\u4e3a  <jarfile> \u7684  jar \u6587\u4ef6\uff09 ]"},
+    { "optionXP",
+    " [-XP \u8f6f\u4ef6\u5305\uff08\u4e3a\u6240\u6709\u751f\u6210\u7684  translet \u7c7b\u6307\u5b9a\u8f6f\u4ef6\u5305\u540d\u79f0\u524d\u7f00\uff09 ]"}
+
+
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#error";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "\u9519\u8bef\uff1a  ";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "\u8b66\u544a\uff1a  ";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+}
diff --git a/src/org/apache/xalan/res/XSLTErrorResources_zh_TW.java b/src/org/apache/xalan/res/XSLTErrorResources_zh_TW.java
new file mode 100644
index 0000000..bd3f0af
--- /dev/null
+++ b/src/org/apache/xalan/res/XSLTErrorResources_zh_TW.java
@@ -0,0 +1,2851 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xalan.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+import java.util.MissingResourceException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import java.text.DecimalFormat;
+
+import org.apache.xalan.templates.Constants;
+
+/**
+ * Set up error messages.
+ * We build a two dimensional array of message keys and
+ * message strings. In order to add a new message here,
+ * you need to first add a String constant. And
+ *  you need to enter key , value pair as part of contents
+ * Array. You also need to update MAX_CODE for error strings
+ * and MAX_WARNING for warnings ( Needed for only information
+ * purpose )
+ */
+
+public class XSLTErrorResources_zh_TW extends XSLTErrorResources
+{
+
+   /** Maximum error messages, this is needed to keep track of the number of messages.    */
+  public static final int MAX_CODE = 253;          
+
+  /** Maximum warnings, this is needed to keep track of the number of warnings.          */
+  public static final int MAX_WARNING = 29;
+
+   /** Maximum misc strings.   */
+  public static final int MAX_OTHERS = 55;
+
+  /** Maximum total warnings and error messages.          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  /** The lookup table for error messages.   */
+
+  public static final Object[][] contents = {
+
+  /** Error message ID that has a null message, but takes in a single object.    */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** ER_NO_CURLYBRACE          */
+  //public static final int ER_NO_CURLYBRACE = 1;
+
+
+  {
+    ER_NO_CURLYBRACE,
+      "\u932f\u8aa4\uff1a\u5728\u8868\u793a\u5f0f\u5167\u4e0d\u80fd\u6709 '{'"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE = 2;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE, "{0} \u542b\u6709\u4e0d\u6b63\u78ba\u5c6c\u6027\uff1a{1}"},
+
+
+  /** ER_NULL_SOURCENODE_APPLYIMPORTS          */
+  //public static final int ER_NULL_SOURCENODE_APPLYIMPORTS = 3;
+
+
+  {
+    ER_NULL_SOURCENODE_APPLYIMPORTS,
+      "\u5728 xsl:apply-imports \u4e2d\u7684 sourceNode \u70ba\u7a7a\u503c\uff01"},
+
+
+  /** ER_CANNOT_ADD          */
+  //public static final int ER_CANNOT_ADD = 4;
+
+
+  {
+    ER_CANNOT_ADD, "\u7121\u6cd5\u5c07 {0} \u65b0\u589e\u81f3 {1}"},
+
+
+  /** ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES          */
+  //public static final int ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES = 5;
+
+
+  {
+    ER_NULL_SOURCENODE_HANDLEAPPLYTEMPLATES,
+      "\u5728 handleApplyTemplatesInstruction \u4e2d\u7684 sourceNode \u70ba\u7a7a\u503c\uff01"},
+
+
+  /** ER_NO_NAME_ATTRIB          */
+  //public static final int ER_NO_NAME_ATTRIB = 6;
+
+
+  {
+    ER_NO_NAME_ATTRIB, "{0} \u5fc5\u9808\u6709 name \u5c6c\u6027\u3002 "},
+
+
+  /** ER_TEMPLATE_NOT_FOUND          */
+  //public static final int ER_TEMPLATE_NOT_FOUND = 7;
+
+
+  {
+    ER_TEMPLATE_NOT_FOUND, "\u627e\u4e0d\u5230\u540d\u7a31\u70ba {0} \u7684\u7bc4\u672c"},
+
+
+  /** ER_CANT_RESOLVE_NAME_AVT          */
+  //public static final int ER_CANT_RESOLVE_NAME_AVT = 8;
+
+
+  {
+    ER_CANT_RESOLVE_NAME_AVT,
+      "\u7121\u6cd5\u89e3\u8b6f xsl:call-template \u4e2d\u7684\u540d\u7a31 AVT\u3002"},
+
+
+  /** ER_REQUIRES_ATTRIB          */
+  //public static final int ER_REQUIRES_ATTRIB = 9;
+
+
+  {
+    ER_REQUIRES_ATTRIB, "{0} \u9700\u8981\u5c6c\u6027\uff1a{1}"},
+
+
+  /** ER_MUST_HAVE_TEST_ATTRIB          */
+  //public static final int ER_MUST_HAVE_TEST_ATTRIB = 10;
+
+
+  {
+    ER_MUST_HAVE_TEST_ATTRIB,
+      "{0} \u5fc5\u9808\u6709 ''test'' \u5c6c\u6027\u3002"},
+
+
+  /** ER_BAD_VAL_ON_LEVEL_ATTRIB          */
+  //public static final int ER_BAD_VAL_ON_LEVEL_ATTRIB = 11;
+
+
+  {
+    ER_BAD_VAL_ON_LEVEL_ATTRIB,
+      "level \u5c6c\u6027 {0} \u4e0a\u7684\u503c\u932f\u8aa4"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 12;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+      "processing-instruction \u540d\u7a31\u4e0d\u5f97\u70ba 'xml'"},
+
+
+  /** ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 13;
+
+
+  {
+    ER_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+      "processing-instruction \u540d\u7a31\u5fc5\u9808\u662f\u6709\u6548\u7684 NCName\uff1a{0}"},
+
+
+  /** ER_NEED_MATCH_ATTRIB          */
+  //public static final int ER_NEED_MATCH_ATTRIB = 14;
+
+
+  {
+    ER_NEED_MATCH_ATTRIB,
+      "\u5982\u679c {0} \u6709\u6a21\u5f0f\u7684\u8a71\uff0c\u5247\u5b83\u5fc5\u9808\u6709 match \u5c6c\u6027\u3002"},
+
+
+  /** ER_NEED_NAME_OR_MATCH_ATTRIB          */
+  //public static final int ER_NEED_NAME_OR_MATCH_ATTRIB = 15;
+
+
+  {
+    ER_NEED_NAME_OR_MATCH_ATTRIB,
+      "{0} \u9700\u8981 name \u6216 match \u5c6c\u6027\u3002"},
+
+
+  /** ER_CANT_RESOLVE_NSPREFIX          */
+  //public static final int ER_CANT_RESOLVE_NSPREFIX = 16;
+
+
+  {
+    ER_CANT_RESOLVE_NSPREFIX,
+      "\u7121\u6cd5\u89e3\u8b6f\u540d\u7a31\u7a7a\u9593\u524d\u7f6e\uff1a{0}"},
+
+
+  /** ER_ILLEGAL_VALUE          */
+  //public static final int ER_ILLEGAL_VALUE = 17;
+
+
+  {
+    ER_ILLEGAL_VALUE, "xml:space \u542b\u6709\u4e0d\u5408\u898f\u5247\u7684\u503c\uff1a{0}"},
+
+
+  /** ER_NO_OWNERDOC          */
+  //public static final int ER_NO_OWNERDOC = 18;
+
+
+  {
+    ER_NO_OWNERDOC,
+      "\u5b50\u9805\u7bc0\u9ede\u6c92\u6709\u64c1\u6709\u8005\u6587\u4ef6\uff01"},
+
+
+  /** ER_ELEMTEMPLATEELEM_ERR          */
+  //public static final int ER_ELEMTEMPLATEELEM_ERR = 19;
+
+
+  {
+    ER_ELEMTEMPLATEELEM_ERR, "ElemTemplateElement \u932f\u8aa4\uff1a{0}"},
+
+
+  /** ER_NULL_CHILD          */
+  //public static final int ER_NULL_CHILD = 20;
+
+
+  {
+    ER_NULL_CHILD, "\u5617\u8a66\u65b0\u589e\u7a7a\u7684\u5b50\u9805\uff01"},
+
+
+  /** ER_NEED_SELECT_ATTRIB          */
+  //public static final int ER_NEED_SELECT_ATTRIB = 21;
+
+
+  {
+    ER_NEED_SELECT_ATTRIB, "{0} \u9700\u8981 select \u5c6c\u6027\u3002"},
+
+
+  /** ER_NEED_TEST_ATTRIB          */
+  //public static final int ER_NEED_TEST_ATTRIB = 22;
+
+
+  {
+    ER_NEED_TEST_ATTRIB,
+      "xsl:when \u5fc5\u9808\u6709 'test' \u5c6c\u6027\u3002"},
+
+
+  /** ER_NEED_NAME_ATTRIB          */
+  //public static final int ER_NEED_NAME_ATTRIB = 23;
+
+
+  {
+    ER_NEED_NAME_ATTRIB,
+      "xsl:with-param \u5fc5\u9808\u6709 'name' \u5c6c\u6027\u3002"},
+
+
+  /** ER_NO_CONTEXT_OWNERDOC          */
+  //public static final int ER_NO_CONTEXT_OWNERDOC = 24;
+
+
+  {
+    ER_NO_CONTEXT_OWNERDOC,
+      "\u4e0a\u4e0b\u6587\u4e0d\u542b\u64c1\u6709\u8005\u6587\u4ef6\uff01"},
+
+
+  /** ER_COULD_NOT_CREATE_XML_PROC_LIAISON          */
+  //public static final int ER_COULD_NOT_CREATE_XML_PROC_LIAISON = 25;
+
+
+  {
+    ER_COULD_NOT_CREATE_XML_PROC_LIAISON,
+      "\u7121\u6cd5\u5efa\u7acb XML TransformerFactory Liaison\uff1a{0}"},
+
+
+  /** ER_PROCESS_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESS_NOT_SUCCESSFUL = 26;
+
+
+  {
+    ER_PROCESS_NOT_SUCCESSFUL,
+      "Xalan: \u8655\u7406\u4e0d\u6210\u529f\u3002"},
+
+
+  /** ER_NOT_SUCCESSFUL          */
+  //public static final int ER_NOT_SUCCESSFUL = 27;
+
+
+  {
+    ER_NOT_SUCCESSFUL, "Xalan: \u4e0d\u6210\u529f\u3002"},
+
+
+  /** ER_ENCODING_NOT_SUPPORTED          */
+  //public static final int ER_ENCODING_NOT_SUPPORTED = 28;
+
+
+  {
+    ER_ENCODING_NOT_SUPPORTED, "\u4e0d\u652f\u63f4\u7de8\u78bc\uff1a{0}"},
+
+
+  /** ER_COULD_NOT_CREATE_TRACELISTENER          */
+  //public static final int ER_COULD_NOT_CREATE_TRACELISTENER = 29;
+
+
+  {
+    ER_COULD_NOT_CREATE_TRACELISTENER,
+      "\u7121\u6cd5\u5efa\u7acb TraceListener\uff1a{0}"},
+
+
+  /** ER_KEY_REQUIRES_NAME_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_NAME_ATTRIB = 30;
+
+
+  {
+    ER_KEY_REQUIRES_NAME_ATTRIB,
+      "xsl:key \u9700\u8981 'name' \u5c6c\u6027\uff01"},
+
+
+  /** ER_KEY_REQUIRES_MATCH_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_MATCH_ATTRIB = 31;
+
+
+  {
+    ER_KEY_REQUIRES_MATCH_ATTRIB,
+      "xsl:key \u9700\u8981 'match' \u5c6c\u6027\uff01"},
+
+
+  /** ER_KEY_REQUIRES_USE_ATTRIB          */
+  //public static final int ER_KEY_REQUIRES_USE_ATTRIB = 32;
+
+
+  {
+    ER_KEY_REQUIRES_USE_ATTRIB,
+      "xsl:key \u9700\u8981 'use' \u5c6c\u6027\uff01"},
+
+
+  /** ER_REQUIRES_ELEMENTS_ATTRIB          */
+  //public static final int ER_REQUIRES_ELEMENTS_ATTRIB = 33;
+
+
+  {
+    ER_REQUIRES_ELEMENTS_ATTRIB,
+      "(StylesheetHandler) {0} \u9700\u8981 ''elements'' \u5c6c\u6027\uff01"},
+
+
+  /** ER_MISSING_PREFIX_ATTRIB          */
+  //public static final int ER_MISSING_PREFIX_ATTRIB = 34;
+
+
+  {
+    ER_MISSING_PREFIX_ATTRIB,
+      "(StylesheetHandler) {0} \u5c6c\u6027 ''prefix'' \u907a\u6f0f"},
+
+
+  /** ER_BAD_STYLESHEET_URL          */
+  //public static final int ER_BAD_STYLESHEET_URL = 35;
+
+
+  {
+    ER_BAD_STYLESHEET_URL, "\u6a23\u5f0f\u8868 URL \u932f\u8aa4\uff1a{0}"},
+
+
+  /** ER_FILE_NOT_FOUND          */
+  //public static final int ER_FILE_NOT_FOUND = 36;
+
+
+  {
+    ER_FILE_NOT_FOUND, "\u627e\u4e0d\u5230\u6a23\u5f0f\u8868\u6a94\u6848\uff1a{0}"},
+
+
+  /** ER_IOEXCEPTION          */
+  //public static final int ER_IOEXCEPTION = 37;
+
+
+  {
+    ER_IOEXCEPTION,
+      "\u6a23\u5f0f\u8868\u6a94\u6848 {0} \u6709\u8f38\u5165/\u8f38\u51fa (I/O) \u7570\u5e38"},
+
+
+  /** ER_NO_HREF_ATTRIB          */
+  //public static final int ER_NO_HREF_ATTRIB = 38;
+
+
+  {
+    ER_NO_HREF_ATTRIB,
+      "(StylesheetHandler) \u627e\u4e0d\u5230 {0} \u7684 href \u5c6c\u6027"},
+
+
+  /** ER_STYLESHEET_INCLUDES_ITSELF          */
+  //public static final int ER_STYLESHEET_INCLUDES_ITSELF = 39;
+
+
+  {
+    ER_STYLESHEET_INCLUDES_ITSELF,
+      "(StylesheetHandler) {0} \u76f4\u63a5\u6216\u9593\u63a5\u5305\u542b\u672c\u8eab\uff01"},
+
+
+  /** ER_PROCESSINCLUDE_ERROR          */
+  //public static final int ER_PROCESSINCLUDE_ERROR = 40;
+
+
+  {
+    ER_PROCESSINCLUDE_ERROR,
+      "StylesheetHandler.processInclude \u932f\u8aa4\uff1a{0}"},
+
+
+  /** ER_MISSING_LANG_ATTRIB          */
+  //public static final int ER_MISSING_LANG_ATTRIB = 41;
+
+
+  {
+    ER_MISSING_LANG_ATTRIB,
+      "(StylesheetHandler) {0} \u5c6c\u6027 ''lang'' \u907a\u6f0f"},
+
+
+  /** ER_MISSING_CONTAINER_ELEMENT_COMPONENT          */
+  //public static final int ER_MISSING_CONTAINER_ELEMENT_COMPONENT = 42;
+
+
+  {
+    ER_MISSING_CONTAINER_ELEMENT_COMPONENT,
+      "(StylesheetHandler) \u8aa4\u7f6e {0} \u5143\u7d20\uff1f\uff1f \u907a\u6f0f container \u5143\u7d20 ''component''"},
+
+
+  /** ER_CAN_ONLY_OUTPUT_TO_ELEMENT          */
+  //public static final int ER_CAN_ONLY_OUTPUT_TO_ELEMENT = 43;
+
+
+  {
+    ER_CAN_ONLY_OUTPUT_TO_ELEMENT,
+      "\u53ea\u80fd\u8f38\u51fa\u81f3 Element\u3001DocumentFragment\u3001Document \u6216 PrintWriter\u3002"},
+
+
+  /** ER_PROCESS_ERROR          */
+  //public static final int ER_PROCESS_ERROR = 44;
+
+
+  {
+    ER_PROCESS_ERROR, "StylesheetRoot.process \u932f\u8aa4"},
+
+
+  /** ER_UNIMPLNODE_ERROR          */
+  //public static final int ER_UNIMPLNODE_ERROR = 45;
+
+
+  {
+    ER_UNIMPLNODE_ERROR, "UnImplNode \u932f\u8aa4\uff1a{0}"},
+
+
+  /** ER_NO_SELECT_EXPRESSION          */
+  //public static final int ER_NO_SELECT_EXPRESSION = 46;
+
+
+  {
+    ER_NO_SELECT_EXPRESSION,
+      "\u932f\u8aa4\uff01\u672a\u627e\u5230 xpath select \u8868\u793a\u5f0f (-select)\u3002"},
+
+
+  /** ER_CANNOT_SERIALIZE_XSLPROCESSOR          */
+  //public static final int ER_CANNOT_SERIALIZE_XSLPROCESSOR = 47;
+
+
+  {
+    ER_CANNOT_SERIALIZE_XSLPROCESSOR,
+      "\u7121\u6cd5\u4e32\u5217\u5316 XSLProcessor\uff01"},
+
+
+  /** ER_NO_INPUT_STYLESHEET          */
+  //public static final int ER_NO_INPUT_STYLESHEET = 48;
+
+
+  {
+    ER_NO_INPUT_STYLESHEET,
+      "\u672a\u6307\u5b9a\u6a23\u5f0f\u8868\u8f38\u5165\uff01"},
+
+
+  /** ER_FAILED_PROCESS_STYLESHEET          */
+  //public static final int ER_FAILED_PROCESS_STYLESHEET = 49;
+
+
+  {
+    ER_FAILED_PROCESS_STYLESHEET,
+      "\u7121\u6cd5\u8655\u7406\u6a23\u5f0f\u8868\uff01"},
+
+
+  /** ER_COULDNT_PARSE_DOC          */
+  //public static final int ER_COULDNT_PARSE_DOC = 50;
+
+
+  {
+    ER_COULDNT_PARSE_DOC, "\u7121\u6cd5\u5256\u6790 {0} \u6587\u4ef6\uff01"},
+
+
+  /** ER_COULDNT_FIND_FRAGMENT          */
+  //public static final int ER_COULDNT_FIND_FRAGMENT = 51;
+
+
+  {
+    ER_COULDNT_FIND_FRAGMENT, "\u627e\u4e0d\u5230\u7247\u6bb5\uff1a{0}"},
+
+
+  /** ER_NODE_NOT_ELEMENT          */
+  //public static final int ER_NODE_NOT_ELEMENT = 52;
+
+
+  {
+    ER_NODE_NOT_ELEMENT,
+      "\u7247\u6bb5\u8b58\u5225\u78bc\u6240\u6307\u7684\u7bc0\u9ede\u4e0d\u662f\u5143\u7d20\uff1a{0}"},
+
+
+  /** ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB = 53;
+
+
+  {
+    ER_FOREACH_NEED_MATCH_OR_NAME_ATTRIB,
+      "for-each \u5fc5\u9808\u6709 match \u6216 name \u5c6c\u6027"},
+
+
+  /** ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB          */
+  //public static final int ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB = 54;
+
+
+  {
+    ER_TEMPLATES_NEED_MATCH_OR_NAME_ATTRIB,
+      "templates \u5fc5\u9808\u6709 match \u6216 name \u5c6c\u6027"},
+
+
+  /** ER_NO_CLONE_OF_DOCUMENT_FRAG          */
+  //public static final int ER_NO_CLONE_OF_DOCUMENT_FRAG = 55;
+
+
+  {
+    ER_NO_CLONE_OF_DOCUMENT_FRAG,
+      "\u6587\u4ef6\u7247\u6bb5\u6c92\u6709\u8907\u672c\uff01"},
+
+
+  /** ER_CANT_CREATE_ITEM          */
+  //public static final int ER_CANT_CREATE_ITEM = 56;
+
+
+  {
+    ER_CANT_CREATE_ITEM,
+      "\u7121\u6cd5\u5728\u7d50\u679c\u6a39 {0} \u5efa\u7acb\u9805\u76ee"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VALUE          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VALUE = 57;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VALUE,
+      "\u4f86\u6e90 XML \u4e2d\u7684 xml:space \u542b\u6709\u4e0d\u5408\u898f\u5247\u7684\u503c\uff1a{0}"},
+
+
+  /** ER_NO_XSLKEY_DECLARATION          */
+  //public static final int ER_NO_XSLKEY_DECLARATION = 58;
+
+
+  {
+    ER_NO_XSLKEY_DECLARATION,
+      "{0} \u6c92\u6709 xsl:key \u5ba3\u544a\uff01"},
+
+
+  /** ER_CANT_CREATE_URL          */
+  //public static final int ER_CANT_CREATE_URL = 59;
+
+
+  {
+    ER_CANT_CREATE_URL, "\u932f\u8aa4\uff01\u7121\u6cd5\u5efa\u7acb URL \u7d66\uff1a{0}"},
+
+
+  /** ER_XSLFUNCTIONS_UNSUPPORTED          */
+  //public static final int ER_XSLFUNCTIONS_UNSUPPORTED = 60;
+
+
+  {
+    ER_XSLFUNCTIONS_UNSUPPORTED, "\u4e0d\u652f\u63f4 xsl:functions"},
+
+
+  /** ER_PROCESSOR_ERROR          */
+  //public static final int ER_PROCESSOR_ERROR = 61;
+
+
+  {
+    ER_PROCESSOR_ERROR, "XSLT TransformerFactory \u932f\u8aa4"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_STYLESHEET          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_STYLESHEET = 62;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_STYLESHEET,
+      "(StylesheetHandler) {0} \u4e0d\u5141\u8a31\u5728\u6a23\u5f0f\u8868\u5167\uff01"},
+
+
+  /** ER_RESULTNS_NOT_SUPPORTED          */
+  //public static final int ER_RESULTNS_NOT_SUPPORTED = 63;
+
+
+  {
+    ER_RESULTNS_NOT_SUPPORTED,
+      "\u4e0d\u518d\u652f\u63f4 result-ns\uff01\u8acb\u4f7f\u7528 xsl:output \u4f86\u4ee3\u66ff\u3002"},
+
+
+  /** ER_DEFAULTSPACE_NOT_SUPPORTED          */
+  //public static final int ER_DEFAULTSPACE_NOT_SUPPORTED = 64;
+
+
+  {
+    ER_DEFAULTSPACE_NOT_SUPPORTED,
+      "\u4e0d\u518d\u652f\u63f4 default-space\uff01\u8acb\u4f7f\u7528 xsl:strip-space \u6216 xsl:preserve-space \u4f86\u4ee3\u66ff\u3002"},
+
+
+  /** ER_INDENTRESULT_NOT_SUPPORTED          */
+  //public static final int ER_INDENTRESULT_NOT_SUPPORTED = 65;
+
+
+  {
+    ER_INDENTRESULT_NOT_SUPPORTED,
+      "\u4e0d\u518d\u652f\u63f4 indent-result\uff01\u8acb\u4f7f\u7528 xsl:output \u4f86\u4ee3\u66ff\u3002"},
+
+
+  /** ER_ILLEGAL_ATTRIB          */
+  //public static final int ER_ILLEGAL_ATTRIB = 66;
+
+
+  {
+    ER_ILLEGAL_ATTRIB,
+      "(StylesheetHandler) {0} \u542b\u6709\u4e0d\u5408\u898f\u5247\u7684\u5c6c\u6027\uff1a{1}"},
+
+
+  /** ER_UNKNOWN_XSL_ELEM          */
+  //public static final int ER_UNKNOWN_XSL_ELEM = 67;
+
+
+  {
+    ER_UNKNOWN_XSL_ELEM, "XSL \u5143\u7d20\uff1a{0}"},
+
+
+  /** ER_BAD_XSLSORT_USE          */
+  //public static final int ER_BAD_XSLSORT_USE = 68;
+
+
+  {
+    ER_BAD_XSLSORT_USE,
+      "(StylesheetHandler) xsl:sort \u53ea\u80fd\u8207 xsl:apply-templates \u6216 xsl:for-each \u4e00\u8d77\u4f7f\u7528\u3002"},
+
+
+  /** ER_MISPLACED_XSLWHEN          */
+  //public static final int ER_MISPLACED_XSLWHEN = 69;
+
+
+  {
+    ER_MISPLACED_XSLWHEN,
+      "(StylesheetHandler) \u8aa4\u7f6e xsl:when\uff01"},
+
+
+  /** ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE = 70;
+
+
+  {
+    ER_XSLWHEN_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:when \u7684\u4e0a\u4ee3\u4e0d\u662f xsl:choose\uff01"},
+
+
+  /** ER_MISPLACED_XSLOTHERWISE          */
+  //public static final int ER_MISPLACED_XSLOTHERWISE = 71;
+
+
+  {
+    ER_MISPLACED_XSLOTHERWISE,
+      "(StylesheetHandler) \u8aa4\u7f6e xsl:otherwise\uff01"},
+
+
+  /** ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE          */
+  //public static final int ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE = 72;
+
+
+  {
+    ER_XSLOTHERWISE_NOT_PARENTED_BY_XSLCHOOSE,
+      "(StylesheetHandler) xsl:otherwise \u7684\u4e0a\u4ee3\u4e0d\u662f xsl:choose\uff01"},
+
+
+  /** ER_NOT_ALLOWED_INSIDE_TEMPLATE          */
+  //public static final int ER_NOT_ALLOWED_INSIDE_TEMPLATE = 73;
+
+
+  {
+    ER_NOT_ALLOWED_INSIDE_TEMPLATE,
+      "(StylesheetHandler) {0} \u4e0d\u5141\u8a31\u5728\u7bc4\u672c\u5167\uff01"},
+
+
+  /** ER_UNKNOWN_EXT_NS_PREFIX          */
+  //public static final int ER_UNKNOWN_EXT_NS_PREFIX = 74;
+
+
+  {
+    ER_UNKNOWN_EXT_NS_PREFIX,
+      "(StylesheetHandler) {0} \u5ef6\u4f38\u7a0b\u5f0f\u540d\u7a31\u7a7a\u9593\u524d\u7f6e {1} \u672a\u77e5"},
+
+
+  /** ER_IMPORTS_AS_FIRST_ELEM          */
+  //public static final int ER_IMPORTS_AS_FIRST_ELEM = 75;
+
+
+  {
+    ER_IMPORTS_AS_FIRST_ELEM,
+      "(StylesheetHandler) Imports \u53ea\u80fd\u51fa\u73fe\u65bc\u6a23\u5f0f\u8868\u4e2d\u4f5c\u70ba\u7b2c\u4e00\u500b\u5143\u7d20\uff01"},
+
+
+  /** ER_IMPORTING_ITSELF          */
+  //public static final int ER_IMPORTING_ITSELF = 76;
+
+
+  {
+    ER_IMPORTING_ITSELF,
+      "(StylesheetHandler) {0} \u76f4\u63a5\u6216\u9593\u63a5\u532f\u5165\u672c\u8eab\uff01"},
+
+
+  /** ER_XMLSPACE_ILLEGAL_VAL          */
+  //public static final int ER_XMLSPACE_ILLEGAL_VAL = 77;
+
+
+  {
+    ER_XMLSPACE_ILLEGAL_VAL,
+      "(StylesheetHandler) " + "xml:space \u542b\u6709\u4e0d\u5408\u898f\u5247\u7684\u503c\uff1a{0}"},
+
+
+  /** ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL          */
+  //public static final int ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL = 78;
+
+
+  {
+    ER_PROCESSSTYLESHEET_NOT_SUCCESSFUL,
+      "processStylesheet \u4e0d\u6210\u529f\uff01"},
+
+
+  /** ER_SAX_EXCEPTION          */
+  //public static final int ER_SAX_EXCEPTION = 79;
+
+
+  {
+    ER_SAX_EXCEPTION, "SAX \u7570\u5e38"},
+
+
+  /** ER_FUNCTION_NOT_SUPPORTED          */
+  //public static final int ER_FUNCTION_NOT_SUPPORTED = 80;
+
+
+  {
+    ER_FUNCTION_NOT_SUPPORTED, "\u4e0d\u652f\u63f4\u51fd\u5f0f\uff01"},
+
+
+  /** ER_XSLT_ERROR          */
+  //public static final int ER_XSLT_ERROR = 81;
+
+
+  {
+    ER_XSLT_ERROR, "XSLT \u932f\u8aa4"},
+
+
+  /** ER_CURRENCY_SIGN_ILLEGAL          */
+  //public static final int ER_CURRENCY_SIGN_ILLEGAL = 82;
+
+
+  {
+    ER_CURRENCY_SIGN_ILLEGAL,
+      "\u8ca8\u5e63\u7b26\u865f\u4e0d\u5141\u8a31\u5728\u683c\u5f0f\u578b\u6a23\u5b57\u4e32\u4e2d"},
+
+
+  /** ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM          */
+  //public static final int ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM = 83;
+
+
+  {
+    ER_DOCUMENT_FUNCTION_INVALID_IN_STYLESHEET_DOM,
+      "\u6a23\u5f0f\u8868 DOM \u4e0d\u652f\u63f4\u6587\u4ef6\u51fd\u5f0f\uff01"},
+
+
+  /** ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER          */
+  //public static final int ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER = 84;
+
+
+  {
+    ER_CANT_RESOLVE_PREFIX_OF_NON_PREFIX_RESOLVER,
+      "\u7121\u6cd5\u89e3\u8b6f\u975e\u524d\u7f6e\u89e3\u6790\u5668\u7684\u524d\u7f6e\uff01"},
+
+
+  /** ER_REDIRECT_COULDNT_GET_FILENAME          */
+  //public static final int ER_REDIRECT_COULDNT_GET_FILENAME = 85;
+
+
+  {
+    ER_REDIRECT_COULDNT_GET_FILENAME,
+      "\u91cd\u65b0\u5c0e\u5411\u5ef6\u4f38\u7a0b\u5f0f\uff1a\u7121\u6cd5\u53d6\u5f97\u6a94\u6848\u540d\u7a31 - file \u6216 select \u5c6c\u6027\u5fc5\u9808\u50b3\u56de\u6709\u6548\u5b57\u4e32\u3002"},
+
+
+  /** ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT          */
+  //public static final int ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT = 86;
+
+
+  {
+    ER_CANNOT_BUILD_FORMATTERLISTENER_IN_REDIRECT,
+      "\u7121\u6cd5\u5728\u91cd\u65b0\u5c0e\u5411\u5ef6\u4f38\u7a0b\u5f0f\u4e2d\u5efa\u7acb FormatterListener\uff01"},
+
+
+  /** ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX          */
+  //public static final int ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX = 87;
+
+
+  {
+    ER_INVALID_PREFIX_IN_EXCLUDERESULTPREFIX,
+      "exclude-result-prefixes \u4e2d\u7684\u524d\u7f6e\u7121\u6548\uff1a{0}"},
+
+
+  /** ER_MISSING_NS_URI          */
+  //public static final int ER_MISSING_NS_URI = 88;
+
+
+  {
+    ER_MISSING_NS_URI,
+      "\u907a\u6f0f\u6307\u5b9a\u7684\u524d\u7f6e\u7684\u540d\u7a31\u7a7a\u9593 URI"},
+
+
+  /** ER_MISSING_ARG_FOR_OPTION          */
+  //public static final int ER_MISSING_ARG_FOR_OPTION = 89;
+
+
+  {
+    ER_MISSING_ARG_FOR_OPTION,
+      "\u907a\u6f0f\u9078\u9805\uff1a{0} \u7684\u5f15\u6578"},
+
+
+  /** ER_INVALID_OPTION          */
+  //public static final int ER_INVALID_OPTION = 90;
+
+
+  {
+    ER_INVALID_OPTION, "\u7121\u6548\u7684\u9078\u9805\uff1a{0}"},
+
+
+  /** ER_MALFORMED_FORMAT_STRING          */
+  //public static final int ER_MALFORMED_FORMAT_STRING = 91;
+
+
+  {
+    ER_MALFORMED_FORMAT_STRING, "\u8b8a\u5f62\u7684\u683c\u5f0f\u5b57\u4e32\uff1a{0}"},
+
+
+  /** ER_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int ER_STYLESHEET_REQUIRES_VERSION_ATTRIB = 92;
+
+
+  {
+    ER_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet \u9700\u8981 'version' \u5c6c\u6027\uff01"},
+
+
+  /** ER_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int ER_ILLEGAL_ATTRIBUTE_VALUE = 93;
+
+
+  {
+    ER_ILLEGAL_ATTRIBUTE_VALUE,
+      "\u5c6c\u6027\uff1a{0} \u542b\u6709\u4e0d\u6b63\u78ba\u503c\uff1a{1}"},
+
+
+  /** ER_CHOOSE_REQUIRES_WHEN          */
+  //public static final int ER_CHOOSE_REQUIRES_WHEN = 94;
+
+
+  {
+    ER_CHOOSE_REQUIRES_WHEN, "xsl:choose \u9700\u8981 xsl:when"},
+
+
+  /** ER_NO_APPLY_IMPORT_IN_FOR_EACH          */
+  //public static final int ER_NO_APPLY_IMPORT_IN_FOR_EACH = 95;
+
+
+  {
+    ER_NO_APPLY_IMPORT_IN_FOR_EACH,
+      "xsl:apply-imports \u4e0d\u5141\u8a31\u5728 xsl:for-each \u4e2d"},
+
+
+  /** ER_CANT_USE_DTM_FOR_OUTPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_OUTPUT = 96;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_OUTPUT,
+      "\u7121\u6cd5\u5c0d\u8f38\u51fa DOM \u7bc0\u9ede\u4f7f\u7528 DTMLiaison... \u6539\u70ba\u50b3\u9001 org.apache.xpath.DOM2Helper\uff01"},
+
+
+  /** ER_CANT_USE_DTM_FOR_INPUT          */
+  //public static final int ER_CANT_USE_DTM_FOR_INPUT = 97;
+
+
+  {
+    ER_CANT_USE_DTM_FOR_INPUT,
+      "\u7121\u6cd5\u5c0d\u8f38\u5165 DOM \u7bc0\u9ede\u4f7f\u7528 DTMLiaison... \u6539\u70ba\u50b3\u9001 org.apache.xpath.DOM2Helper\uff01"},
+
+
+  /** ER_CALL_TO_EXT_FAILED          */
+  //public static final int ER_CALL_TO_EXT_FAILED = 98;
+
+
+  {
+    ER_CALL_TO_EXT_FAILED,
+      "\u547c\u53eb\u5ef6\u4f38\u7a0b\u5f0f\u5143\u7d20\u5931\u6557\uff1a{0}"},
+
+
+  /** ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 99;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\u524d\u7f6e\u5fc5\u9808\u89e3\u8b6f\u70ba\u540d\u7a31\u7a7a\u9593\uff1a{0}"},
+
+
+  /** ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 100;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\u5075\u6e2c\u5230\u7121\u6548\u7684 UTF-16 \u4ee3\u7528\u54c1\uff1a{0} ?"},
+
+
+  /** ER_XSLATTRSET_USED_ITSELF          */
+  //public static final int ER_XSLATTRSET_USED_ITSELF = 101;
+
+
+  {
+    ER_XSLATTRSET_USED_ITSELF,
+      "xsl:attribute-set {0} \u4f7f\u7528\u672c\u8eab\uff0c\u9019\u5c07\u9020\u6210\u7121\u7aae\u8ff4\u5708\u3002"},
+
+
+  /** ER_CANNOT_MIX_XERCESDOM          */
+  //public static final int ER_CANNOT_MIX_XERCESDOM = 102;
+
+
+  {
+    ER_CANNOT_MIX_XERCESDOM,
+      "\u7121\u6cd5\u6df7\u5408\u975e Xerces-DOM \u8f38\u5165\u8207 Xerces-DOM \u8f38\u51fa\uff01"},
+
+
+  /** ER_TOO_MANY_LISTENERS          */
+  //public static final int ER_TOO_MANY_LISTENERS = 103;
+
+
+  {
+    ER_TOO_MANY_LISTENERS,
+      "addTraceListenersToStylesheet - TooManyListenersException"},
+
+
+  /** ER_IN_ELEMTEMPLATEELEM_READOBJECT          */
+  //public static final int ER_IN_ELEMTEMPLATEELEM_READOBJECT = 104;
+
+
+  {
+    ER_IN_ELEMTEMPLATEELEM_READOBJECT,
+      "\u5728 ElemTemplateElement.readObject\uff1a{0}"},
+
+
+  /** ER_DUPLICATE_NAMED_TEMPLATE          */
+  //public static final int ER_DUPLICATE_NAMED_TEMPLATE = 105;
+
+
+  {
+    ER_DUPLICATE_NAMED_TEMPLATE,
+      "\u627e\u5230\u4e00\u500b\u4ee5\u4e0a\u53eb\u4f5c {0} \u7684\u7bc4\u672c"},
+
+
+  /** ER_INVALID_KEY_CALL          */
+  //public static final int ER_INVALID_KEY_CALL = 106;
+
+
+  {
+    ER_INVALID_KEY_CALL,
+      "\u7121\u6548\u7684\u51fd\u5f0f\u547c\u53eb\uff1arecursive key() \u547c\u53eb\u4e0d\u88ab\u5141\u8a31"},
+
+  
+  /** Variable is referencing itself          */
+  //public static final int ER_REFERENCING_ITSELF = 107;
+
+
+  {
+    ER_REFERENCING_ITSELF,
+      "\u8b8a\u6578 {0} \u76f4\u63a5\u6216\u9593\u63a5\u53c3\u7167\u672c\u8eab\uff01"},
+
+  
+  /** Illegal DOMSource input          */
+  //public static final int ER_ILLEGAL_DOMSOURCE_INPUT = 108;
+
+
+  {
+    ER_ILLEGAL_DOMSOURCE_INPUT,
+      "\u5c0d newTemplates \u7684 DOMSource \u800c\u8a00\uff0c\u8f38\u5165\u7bc0\u9ede\u4e0d\u5f97\u70ba\u7a7a\u503c\uff01"},
+
+	
+	/** Class not found for option         */
+  //public static final int ER_CLASS_NOT_FOUND_FOR_OPTION = 109;
+
+
+  {
+    ER_CLASS_NOT_FOUND_FOR_OPTION,
+			"\u627e\u4e0d\u5230\u9078\u9805 {0} \u7684\u985e\u5225\u6a94\u6848"},
+
+	
+	/** Required Element not found         */
+  //public static final int ER_REQUIRED_ELEM_NOT_FOUND = 110;
+
+
+  {
+    ER_REQUIRED_ELEM_NOT_FOUND,
+			"\u627e\u4e0d\u5230\u5fc5\u9700\u7684\u5143\u7d20\uff1a{0}"},
+
+  
+  /** InputStream cannot be null         */
+  //public static final int ER_INPUT_CANNOT_BE_NULL = 111;
+
+
+  {
+    ER_INPUT_CANNOT_BE_NULL,
+			"InputStream \u4e0d\u5f97\u70ba\u7a7a\u503c"},
+
+  
+  /** URI cannot be null         */
+  //public static final int ER_URI_CANNOT_BE_NULL = 112;
+
+
+  {
+    ER_URI_CANNOT_BE_NULL,
+			"URI \u4e0d\u5f97\u70ba\u7a7a\u503c"},
+
+  
+  /** File cannot be null         */
+  //public static final int ER_FILE_CANNOT_BE_NULL = 113;
+
+
+  {
+    ER_FILE_CANNOT_BE_NULL,
+			"\u6a94\u6848\u4e0d\u53ef\u70ba\u7a7a\u503c"},
+
+  
+   /** InputSource cannot be null         */
+  //public static final int ER_SOURCE_CANNOT_BE_NULL = 114;
+
+
+  {
+    ER_SOURCE_CANNOT_BE_NULL,
+			"InputSource \u4e0d\u53ef\u70ba\u7a7a\u503c"},
+
+  
+  /** Can't overwrite cause         */
+  //public static final int ER_CANNOT_OVERWRITE_CAUSE = 115;
+
+
+  {
+    ER_CANNOT_OVERWRITE_CAUSE,
+			"\u7121\u6cd5\u6539\u5beb\u539f\u56e0"},
+
+  
+  /** Could not initialize BSF Manager        */
+  //public static final int ER_CANNOT_INIT_BSFMGR = 116;
+
+
+  {
+    ER_CANNOT_INIT_BSFMGR,
+			"\u7121\u6cd5\u8d77\u59cb\u8a2d\u5b9a BSF Manager"},
+
+  
+  /** Could not compile extension       */
+  //public static final int ER_CANNOT_CMPL_EXTENSN = 117;
+
+
+  {
+    ER_CANNOT_CMPL_EXTENSN,
+			"\u7121\u6cd5\u7de8\u8b6f\u5ef6\u4f38\u7a0b\u5f0f"},
+
+  
+  /** Could not create extension       */
+  //public static final int ER_CANNOT_CREATE_EXTENSN = 118;
+
+
+  {
+    ER_CANNOT_CREATE_EXTENSN,
+      "\u7121\u6cd5\u5efa\u7acb\u5ef6\u4f38\u7a0b\u5f0f {0}\uff0c\u56e0\u70ba\uff1a{1}"},
+
+  
+  /** Instance method call to method {0} requires an Object instance as first argument       */
+  //public static final int ER_INSTANCE_MTHD_CALL_REQUIRES = 119;
+
+
+  {
+    ER_INSTANCE_MTHD_CALL_REQUIRES,
+      "\u65b9\u6cd5 {0} \u7684\u5be6\u4f8b\u65b9\u6cd5\u547c\u53eb\u9700\u8981\u4e00\u500b\u7269\u4ef6\u5be6\u4f8b\u4f5c\u70ba\u7b2c\u4e00\u500b\u5f15\u6578"},
+
+  
+  /** Invalid element name specified       */
+  //public static final int ER_INVALID_ELEMENT_NAME = 120;
+
+
+  {
+    ER_INVALID_ELEMENT_NAME,
+      "\u6307\u5b9a\u7684\u5143\u7d20\u540d\u7a31\u7121\u6548 {0}"},
+
+  
+   /** Element name method must be static      */
+  //public static final int ER_ELEMENT_NAME_METHOD_STATIC = 121;
+
+
+  {
+    ER_ELEMENT_NAME_METHOD_STATIC,
+      "\u5143\u7d20\u540d\u7a31\u65b9\u6cd5\u5fc5\u9808\u70ba\u975c\u614b {0}"},
+
+  
+   /** Extension function {0} : {1} is unknown      */
+  //public static final int ER_EXTENSION_FUNC_UNKNOWN = 122;
+
+
+  {
+    ER_EXTENSION_FUNC_UNKNOWN,
+             "\u5ef6\u4f38\u7a0b\u5f0f\u51fd\u5f0f {0} : {1} \u672a\u77e5"},
+
+  
+   /** More than one best match for constructor for       */
+  //public static final int ER_MORE_MATCH_CONSTRUCTOR = 123;
+
+
+  {
+    ER_MORE_MATCH_CONSTRUCTOR,
+             "{0} \u7684\u6700\u7b26\u5408\u5efa\u69cb\u5143\u4e0d\u6b62\u4e00\u500b"},
+
+  
+   /** More than one best match for method      */
+  //public static final int ER_MORE_MATCH_METHOD = 124;
+
+
+  {
+    ER_MORE_MATCH_METHOD,
+             "\u6700\u7b26\u5408\u65b9\u6cd5 {0} \u7684\u4e0d\u6b62\u4e00\u500b"},
+
+  
+   /** More than one best match for element method      */
+  //public static final int ER_MORE_MATCH_ELEMENT = 125;
+
+
+  {
+    ER_MORE_MATCH_ELEMENT,
+             "\u6700\u7b26\u5408\u5143\u7d20\u65b9\u6cd5 {0} \u7684\u4e0d\u6b62\u4e00\u500b"},
+
+  
+   /** Invalid context passed to evaluate       */
+  //public static final int ER_INVALID_CONTEXT_PASSED = 126;
+
+
+  {
+    ER_INVALID_CONTEXT_PASSED,
+             "\u50b3\u9001\u4f86\u8a55\u4f30 {0} \u7684\u4e0a\u4e0b\u6587\u7121\u6548"},
+
+  
+   /** Pool already exists       */
+  //public static final int ER_POOL_EXISTS = 127;
+
+
+  {
+    ER_POOL_EXISTS,
+             "\u5132\u5b58\u6c60\u5df2\u5b58\u5728"},
+
+  
+   /** No driver Name specified      */
+  //public static final int ER_NO_DRIVER_NAME = 128;
+
+
+  {
+    ER_NO_DRIVER_NAME,
+             "\u672a\u6307\u5b9a\u9a45\u52d5\u7a0b\u5f0f\u540d\u7a31"},
+
+  
+   /** No URL specified     */
+  //public static final int ER_NO_URL = 129;
+
+
+  {
+    ER_NO_URL,
+             "\u672a\u6307\u5b9a URL"},
+
+  
+   /** Pool size is less than one    */
+  //public static final int ER_POOL_SIZE_LESSTHAN_ONE = 130;
+
+
+  {
+    ER_POOL_SIZE_LESSTHAN_ONE,
+             "\u5132\u5b58\u6c60\u5927\u5c0f\u5c0f\u65bc 1\uff01"},
+
+  
+   /** Invalid driver name specified    */
+  //public static final int ER_INVALID_DRIVER = 131;
+
+
+  {
+    ER_INVALID_DRIVER,
+             "\u6307\u5b9a\u7684\u9a45\u52d5\u7a0b\u5f0f\u540d\u7a31\u7121\u6548\uff01"},
+
+  
+   /** Did not find the stylesheet root    */
+  //public static final int ER_NO_STYLESHEETROOT = 132;
+
+
+  {
+    ER_NO_STYLESHEETROOT,
+             "\u627e\u4e0d\u5230 stylesheet \u6839\uff01"},
+
+  
+   /** Illegal value for xml:space     */
+  //public static final int ER_ILLEGAL_XMLSPACE_VALUE = 133;
+
+
+  {
+    ER_ILLEGAL_XMLSPACE_VALUE,
+         "xml:space \u7684\u503c\u4e0d\u6b63\u78ba"},
+
+  
+   /** processFromNode failed     */
+  //public static final int ER_PROCESSFROMNODE_FAILED = 134;
+
+
+  {
+    ER_PROCESSFROMNODE_FAILED,
+         "processFromNode \u5931\u6548"},
+
+  
+   /** The resource [] could not load:     */
+  //public static final int ER_RESOURCE_COULD_NOT_LOAD = 135;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_LOAD,
+        "\u7121\u6cd5\u8f09\u5165\u8cc7\u6e90 [ {0} ]\uff1a{1} \n {2} \t {3}"},
+
+   
+  
+   /** Buffer size <=0     */
+  //public static final int ER_BUFFER_SIZE_LESSTHAN_ZERO = 136;
+
+
+  {
+    ER_BUFFER_SIZE_LESSTHAN_ZERO,
+        "\u7de9\u885d\u5340\u5927\u5c0f <=0"},
+
+  
+   /** Unknown error when calling extension    */
+  //public static final int ER_UNKNOWN_ERROR_CALLING_EXTENSION = 137;
+
+
+  {
+    ER_UNKNOWN_ERROR_CALLING_EXTENSION,
+        "\u547c\u53eb\u5ef6\u4f38\u7a0b\u5f0f\u6642\u767c\u751f\u672a\u77e5\u932f\u8aa4"},
+
+  
+   /** Prefix {0} does not have a corresponding namespace declaration    */
+  //public static final int ER_NO_NAMESPACE_DECL = 138;
+
+
+  {
+    ER_NO_NAMESPACE_DECL,
+        "\u524d\u7f6e {0} \u6c92\u6709\u5c0d\u61c9\u7684\u540d\u7a31\u7a7a\u9593\u5ba3\u544a"},
+
+  
+   /** Element content not allowed for lang=javaclass   */
+  //public static final int ER_ELEM_CONTENT_NOT_ALLOWED = 139;
+
+
+  {
+    ER_ELEM_CONTENT_NOT_ALLOWED,
+        "lang=javaclass {0} \u4e0d\u5141\u8a31\u5143\u7d20\u5167\u5bb9"},
+     
+  
+   /** Stylesheet directed termination   */
+  //public static final int ER_STYLESHEET_DIRECTED_TERMINATION = 140;
+
+
+  {
+    ER_STYLESHEET_DIRECTED_TERMINATION,
+        "Stylesheet \u5f15\u5c0e\u7d42\u6b62"},
+
+  
+   /** 1 or 2   */
+  //public static final int ER_ONE_OR_TWO = 141;
+
+
+  {
+    ER_ONE_OR_TWO,
+        "1 \u6216 2"},
+
+  
+   /** 2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 142;
+
+
+  {
+    ER_TWO_OR_THREE,
+        "2 \u6216 3"},
+
+  
+   /** Could not load {0} (check CLASSPATH), now using just the defaults   */
+  //public static final int ER_COULD_NOT_LOAD_RESOURCE = 143;
+
+
+  {
+    ER_COULD_NOT_LOAD_RESOURCE,
+        "\u7121\u6cd5\u8f09\u5165 {0}\uff08\u6aa2\u67e5 CLASSPATH\uff09\uff0c\u73fe\u5728\u53ea\u4f7f\u7528\u9810\u8a2d\u503c"},
+
+  
+   /** Cannot initialize default templates   */
+  //public static final int ER_CANNOT_INIT_DEFAULT_TEMPLATES = 144;
+
+
+  {
+    ER_CANNOT_INIT_DEFAULT_TEMPLATES,
+        "\u7121\u6cd5\u8d77\u59cb\u8a2d\u5b9a\u9810\u8a2d\u7bc4\u672c"},
+
+  
+   /** Result should not be null   */
+  //public static final int ER_RESULT_NULL = 145;
+
+
+  {
+    ER_RESULT_NULL,
+        "\u7d50\u679c\u4e0d\u61c9\u8a72\u70ba\u7a7a\u503c"},
+
+    
+   /** Result could not be set   */
+  //public static final int ER_RESULT_COULD_NOT_BE_SET = 146;
+
+
+  {
+    ER_RESULT_COULD_NOT_BE_SET,
+        "\u7121\u6cd5\u8a2d\u5b9a\u7d50\u679c"},
+
+  
+   /** No output specified   */
+  //public static final int ER_NO_OUTPUT_SPECIFIED = 147;
+
+
+  {
+    ER_NO_OUTPUT_SPECIFIED,
+        "\u672a\u6307\u5b9a\u8f38\u51fa"},
+
+  
+   /** Can't transform to a Result of type   */
+  //public static final int ER_CANNOT_TRANSFORM_TO_RESULT_TYPE = 148;
+
+
+  {
+    ER_CANNOT_TRANSFORM_TO_RESULT_TYPE,
+        "\u7121\u6cd5\u8f49\u63db\u6210\u985e\u578b {0} \u7684\u7d50\u679c"},
+
+  
+   /** Can't transform to a Source of type   */
+  //public static final int ER_CANNOT_TRANSFORM_SOURCE_TYPE = 149;
+
+
+  {
+    ER_CANNOT_TRANSFORM_SOURCE_TYPE,
+        "\u7121\u6cd5\u8f49\u63db\u985e\u578b {0} \u7684\u4f86\u6e90"},
+
+  
+   /** Null content handler  */
+  //public static final int ER_NULL_CONTENT_HANDLER = 150;
+
+
+  {
+    ER_NULL_CONTENT_HANDLER,
+        "\u7a7a\u7684\u5167\u5bb9\u8655\u7406\u5668"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 151;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "\u7a7a\u7684\u932f\u8aa4\u8655\u7406\u5668"},
+
+  
+   /** parse can not be called if the ContentHandler has not been set */
+  //public static final int ER_CANNOT_CALL_PARSE = 152;
+
+
+  {
+    ER_CANNOT_CALL_PARSE,
+        "\u5982\u679c\u672a\u8a2d\u5b9a ContentHandler \u5247\u7121\u6cd5\u547c\u53eb\u5256\u6790"},
+
+  
+   /**  No parent for filter */
+  //public static final int ER_NO_PARENT_FOR_FILTER = 153;
+
+
+  {
+    ER_NO_PARENT_FOR_FILTER,
+        "\u904e\u6ffe\u5668\u6c92\u6709\u4e0a\u4ee3"},
+
+  
+  
+   /**  No stylesheet found in: {0}, media */
+  //public static final int ER_NO_STYLESHEET_IN_MEDIA = 154;
+
+
+  {
+    ER_NO_STYLESHEET_IN_MEDIA,
+         "\u5728 {0} media= {1} \u627e\u4e0d\u5230\u6a23\u5f0f\u8868"},
+
+  
+   /**  No xml-stylesheet PI found in */
+  //public static final int ER_NO_STYLESHEET_PI = 155;
+
+
+  {
+    ER_NO_STYLESHEET_PI,
+         "\u5728 {0} \u4e2d\u6c92\u6709\u767c\u73fe XML \u6a23\u5f0f\u8868 PI"},
+
+  
+   /**  No default implementation found */
+  //public static final int ER_NO_DEFAULT_IMPL = 156;
+
+
+  {
+    ER_NO_DEFAULT_IMPL,
+         "\u627e\u4e0d\u5230\u9810\u8a2d\u5efa\u7f6e"},
+
+  
+   /**  ChunkedIntArray({0}) not currently supported */
+  //public static final int ER_CHUNKEDINTARRAY_NOT_SUPPORTED = 157;
+
+
+  {
+    ER_CHUNKEDINTARRAY_NOT_SUPPORTED,
+       "\u76ee\u524d\u4e0d\u652f\u63f4 ChunkedIntArray({0})"},
+
+  
+   /**  Offset bigger than slot */
+  //public static final int ER_OFFSET_BIGGER_THAN_SLOT = 158;
+
+
+  {
+    ER_OFFSET_BIGGER_THAN_SLOT,
+       "\u504f\u79fb\u5927\u65bc\u4ecb\u9762\u69fd"},
+
+  
+   /**  Coroutine not available, id= */
+  //public static final int ER_COROUTINE_NOT_AVAIL = 159;
+
+
+  {
+    ER_COROUTINE_NOT_AVAIL,
+       "\u6c92\u6709 Coroutine \u53ef\u7528\uff0cid={0}"},
+
+  
+   /**  CoroutineManager recieved co_exit() request */
+  //public static final int ER_COROUTINE_CO_EXIT = 160;
+
+
+  {
+    ER_COROUTINE_CO_EXIT,
+       "CoroutineManager \u6536\u5230 co_exit() \u8981\u6c42"},
+
+  
+   /**  co_joinCoroutineSet() failed */
+  //public static final int ER_COJOINROUTINESET_FAILED = 161;
+
+
+  {
+    ER_COJOINROUTINESET_FAILED,
+       "co_joinCoroutineSet() \u5931\u6548"},
+
+  
+   /**  Coroutine parameter error () */
+  //public static final int ER_COROUTINE_PARAM = 162;
+
+
+  {
+    ER_COROUTINE_PARAM,
+       "Coroutine \u53c3\u6578\u932f\u8aa4 ({0})"},
+
+  
+   /**  UNEXPECTED: Parser doTerminate answers  */
+  //public static final int ER_PARSER_DOTERMINATE_ANSWERS = 163;
+
+
+  {
+    ER_PARSER_DOTERMINATE_ANSWERS,
+       "\nUNEXPECTED: \u5256\u6790\u5668 doTerminate \u56de\u7b54 {0}"},
+
+  
+   /**  parse may not be called while parsing */
+  //public static final int ER_NO_PARSE_CALL_WHILE_PARSING = 164;
+
+
+  {
+    ER_NO_PARSE_CALL_WHILE_PARSING,
+       "\u5728\u9032\u884c\u5256\u6790\u6642\u672a\u80fd\u547c\u53eb\u5256\u6790"},
+
+  
+   /**  Error: typed iterator for axis  {0} not implemented  */
+  //public static final int ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED = 165;
+
+
+  {
+    ER_TYPED_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\u932f\u8aa4\uff1a\u5c0d\u8ef8 {0} \u8f38\u5165\u7684\u91cd\u8986\u5668\u6c92\u6709\u57f7\u884c"},
+
+  
+   /**  Error: iterator for axis {0} not implemented  */
+  //public static final int ER_ITERATOR_AXIS_NOT_IMPLEMENTED = 166;
+
+
+  {
+    ER_ITERATOR_AXIS_NOT_IMPLEMENTED,
+       "\u932f\u8aa4\uff1a\u8ef8 {0} \u7684\u91cd\u8986\u5668\u6c92\u6709\u57f7\u884c "},
+
+  
+   /**  Iterator clone not supported  */
+  //public static final int ER_ITERATOR_CLONE_NOT_SUPPORTED = 167;
+
+
+  {
+    ER_ITERATOR_CLONE_NOT_SUPPORTED,
+       "\u4e0d\u652f\u63f4\u91cd\u8986\u5668\u8907\u88fd"},
+
+  
+   /**  Unknown axis traversal type  */
+  //public static final int ER_UNKNOWN_AXIS_TYPE = 168;
+
+
+  {
+    ER_UNKNOWN_AXIS_TYPE,
+       "\u672a\u77e5\u8ef8\u904d\u6b77\u985e\u578b\uff1a{0}"},
+
+  
+   /**  Axis traverser not supported  */
+  //public static final int ER_AXIS_NOT_SUPPORTED = 169;
+
+
+  {
+    ER_AXIS_NOT_SUPPORTED,
+       "\u4e0d\u652f\u63f4\u8ef8\u904d\u8a2a\u5668\uff1a{0}"},
+
+  
+   /**  No more DTM IDs are available  */
+  //public static final int ER_NO_DTMIDS_AVAIL = 170;
+
+
+  {
+    ER_NO_DTMIDS_AVAIL,
+       "\u6c92\u6709\u53ef\u7528\u7684 DTM ID"},
+
+  
+   /**  Not supported  */
+  //public static final int ER_NOT_SUPPORTED = 171;
+
+
+  {
+    ER_NOT_SUPPORTED,
+       "\u4e0d\u652f\u63f4\uff1a{0}"},
+
+  
+   /**  node must be non-null for getDTMHandleFromNode  */
+  //public static final int ER_NODE_NON_NULL = 172;
+
+
+  {
+    ER_NODE_NON_NULL,
+       "\u5c0d getDTMHandleFromNode \u800c\u8a00\uff0c\u7bc0\u9ede\u5fc5\u9808\u70ba\u975e\u7a7a\u503c"},
+
+  
+   /**  Could not resolve the node to a handle  */
+  //public static final int ER_COULD_NOT_RESOLVE_NODE = 173;
+
+
+  {
+    ER_COULD_NOT_RESOLVE_NODE,
+       "\u7121\u6cd5\u89e3\u8b6f\u7bc0\u9ede\u70ba\u63a7\u9ede"},
+
+  
+   /**  startParse may not be called while parsing */
+  //public static final int ER_STARTPARSE_WHILE_PARSING = 174;
+
+
+  {
+    ER_STARTPARSE_WHILE_PARSING,
+       "\u5728\u9032\u884c\u5256\u6790\u6642\u672a\u547c\u53eb startParse"},
+
+  
+   /**  startParse needs a non-null SAXParser  */
+  //public static final int ER_STARTPARSE_NEEDS_SAXPARSER = 175;
+
+
+  {
+    ER_STARTPARSE_NEEDS_SAXPARSER,
+       "startParse \u9700\u8981\u975e\u7a7a\u503c\u7684 SAXParser"},
+
+  
+   /**  could not initialize parser with */
+  //public static final int ER_COULD_NOT_INIT_PARSER = 176;
+
+
+  {
+    ER_COULD_NOT_INIT_PARSER,
+       "\u7121\u6cd5\u8d77\u59cb\u8a2d\u5b9a\u5256\u6790\u5668\uff0c\u4ee5"},
+
+  
+   /**  Value for property {0} should be a Boolean instance  */
+  //public static final int ER_PROPERTY_VALUE_BOOLEAN = 177;
+
+
+  {
+    ER_PROPERTY_VALUE_BOOLEAN,
+       "\u5167\u5bb9 {0} \u7684\u503c\u61c9\u8a72\u662f\u4e00\u500b\u5e03\u6797\u6848\u4f8b"},
+
+  
+   /**  exception creating new instance for pool  */
+  //public static final int ER_EXCEPTION_CREATING_POOL = 178;
+
+
+  {
+    ER_EXCEPTION_CREATING_POOL,
+       "\u5efa\u7acb\u5132\u5b58\u6c60\u7684\u65b0\u6848\u4f8b\u6642\u767c\u751f\u7570\u5e38"},
+
+  
+   /**  Path contains invalid escape sequence  */
+  //public static final int ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE = 179;
+
+
+  {
+    ER_PATH_CONTAINS_INVALID_ESCAPE_SEQUENCE,
+       "\u8def\u5f91\u5305\u542b\u7121\u6548\u9038\u51fa\u5e8f\u5217"},
+
+  
+   /**  Scheme is required!  */
+  //public static final int ER_SCHEME_REQUIRED = 180;
+
+
+  {
+    ER_SCHEME_REQUIRED,
+       "\u7db1\u8981\u662f\u5fc5\u9700\u7684\uff01"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_IN_URI = 181;
+
+
+  {
+    ER_NO_SCHEME_IN_URI,
+       "\u5728 URI \u627e\u4e0d\u5230\u7db1\u8981\uff1a{0}"},
+
+  
+   /**  No scheme found in URI  */
+  //public static final int ER_NO_SCHEME_INURI = 182;
+
+
+  {
+    ER_NO_SCHEME_INURI,
+       "\u5728 URI \u627e\u4e0d\u5230\u7db1\u8981"},
+
+  
+   /**  Path contains invalid character:   */
+  //public static final int ER_PATH_INVALID_CHAR = 183;
+
+
+  {
+    ER_PATH_INVALID_CHAR,
+       "\u8def\u5f91\u5305\u542b\u7121\u6548\u7684\u5b57\u5143\uff1a{0}"},
+
+  
+   /**  Cannot set scheme from null string  */
+  //public static final int ER_SCHEME_FROM_NULL_STRING = 184;
+
+
+  {
+    ER_SCHEME_FROM_NULL_STRING,
+       "\u7121\u6cd5\u5f9e\u7a7a\u5b57\u4e32\u8a2d\u5b9a\u7db1\u8981"},
+
+  
+   /**  The scheme is not conformant. */
+  //public static final int ER_SCHEME_NOT_CONFORMANT = 185;
+
+
+  {
+    ER_SCHEME_NOT_CONFORMANT,
+       "\u7db1\u8981\u4e0d\u4e00\u81f4\u3002"},
+
+  
+   /**  Host is not a well formed address  */
+  //public static final int ER_HOST_ADDRESS_NOT_WELLFORMED = 186;
+
+
+  {
+    ER_HOST_ADDRESS_NOT_WELLFORMED,
+       "\u4e3b\u6a5f\u6c92\u6709\u5b8c\u6574\u7684\u4f4d\u5740"},
+
+  
+   /**  Port cannot be set when host is null  */
+  //public static final int ER_PORT_WHEN_HOST_NULL = 187;
+
+
+  {
+    ER_PORT_WHEN_HOST_NULL,
+       "\u4e3b\u6a5f\u70ba\u7a7a\u503c\u6642\uff0c\u7121\u6cd5\u8a2d\u5b9a\u901a\u8a0a\u57e0"},
+
+  
+   /**  Invalid port number  */
+  //public static final int ER_INVALID_PORT = 188;
+
+
+  {
+    ER_INVALID_PORT,
+       "\u7121\u6548\u7684\u901a\u8a0a\u57e0\u7de8\u865f"},
+
+  
+   /**  Fragment can only be set for a generic URI  */
+  //public static final int ER_FRAG_FOR_GENERIC_URI = 189;
+
+
+  {
+    ER_FRAG_FOR_GENERIC_URI,
+       "\u53ea\u80fd\u5c0d\u540c\u5c6c\u7684 URI \u8a2d\u5b9a\u7247\u6bb5"},
+
+  
+   /**  Fragment cannot be set when path is null  */
+  //public static final int ER_FRAG_WHEN_PATH_NULL = 190;
+
+
+  {
+    ER_FRAG_WHEN_PATH_NULL,
+       "\u8def\u5f91\u70ba\u7a7a\u503c\u6642\uff0c\u7121\u6cd5\u8a2d\u5b9a\u7247\u6bb5"},
+
+  
+   /**  Fragment contains invalid character  */
+  //public static final int ER_FRAG_INVALID_CHAR = 191;
+
+
+  {
+    ER_FRAG_INVALID_CHAR,
+       "\u7247\u6bb5\u5305\u542b\u7121\u6548\u5b57\u5143"},
+
+  
+ 
+  
+   /** Parser is already in use  */
+  //public static final int ER_PARSER_IN_USE = 192;
+
+
+  {
+    ER_PARSER_IN_USE,
+        "\u5256\u6790\u5668\u5df2\u5728\u4f7f\u7528\u4e2d"},
+
+  
+   /** Parser is already in use  */
+  //public static final int ER_CANNOT_CHANGE_WHILE_PARSING = 193;
+
+
+  {
+    ER_CANNOT_CHANGE_WHILE_PARSING,
+        "\u5256\u6790\u6642\u7121\u6cd5\u8b8a\u66f4 {0} {1}"},
+
+  
+   /** Self-causation not permitted  */
+  //public static final int ER_SELF_CAUSATION_NOT_PERMITTED = 194;
+
+
+  {
+    ER_SELF_CAUSATION_NOT_PERMITTED,
+        "\u4e0d\u5141\u8a31\u81ea\u884c\u5f15\u8d77"},
+
+  
+   /** src attribute not yet supported for  */
+  //public static final int ER_COULD_NOT_FIND_EXTERN_SCRIPT = 195;
+
+
+  {
+    ER_COULD_NOT_FIND_EXTERN_SCRIPT,
+       "\u7121\u6cd5\u65bc {0} \u8655\u53d6\u5f97\u5916\u90e8\u6307\u4ee4\u96c6"},
+
+  
+  /** The resource [] could not be found     */
+  //public static final int ER_RESOURCE_COULD_NOT_FIND = 196;
+
+
+  {
+    ER_RESOURCE_COULD_NOT_FIND,
+        "\u627e\u4e0d\u5230\u8cc7\u6e90 [ {0} ]\u3002\n {1}"},
+
+  
+   /** output property not recognized:  */
+  //public static final int ER_OUTPUT_PROPERTY_NOT_RECOGNIZED = 197;
+
+
+  {
+    ER_OUTPUT_PROPERTY_NOT_RECOGNIZED,
+        "\u672a\u80fd\u8fa8\u8b58\u8f38\u51fa\u5167\u5bb9\uff1a{0}"},
+
+  
+   /** Userinfo may not be specified if host is not specified   */
+  //public static final int ER_NO_USERINFO_IF_NO_HOST = 198;
+
+
+  {
+    ER_NO_USERINFO_IF_NO_HOST,
+        "\u5982\u679c\u6c92\u6709\u6307\u5b9a\u4e3b\u6a5f\uff0c\u4e0d\u53ef\u6307\u5b9a Userinfo"},
+
+  
+   /** Port may not be specified if host is not specified   */
+  //public static final int ER_NO_PORT_IF_NO_HOST = 199;
+
+
+  {
+    ER_NO_PORT_IF_NO_HOST,
+        "\u5982\u679c\u6c92\u6709\u6307\u5b9a\u4e3b\u6a5f\uff0c\u4e0d\u53ef\u6307\u5b9a\u901a\u8a0a\u57e0"},
+
+  
+   /** Query string cannot be specified in path and query string   */
+  //public static final int ER_NO_QUERY_STRING_IN_PATH = 200;
+
+
+  {
+    ER_NO_QUERY_STRING_IN_PATH,
+        "\u5728\u8def\u5f91\u53ca\u67e5\u8a62\u5b57\u4e32\u4e2d\u4e0d\u53ef\u6307\u5b9a\u67e5\u8a62\u5b57\u4e32"},
+
+  
+   /** Fragment cannot be specified in both the path and fragment   */
+  //public static final int ER_NO_FRAGMENT_STRING_IN_PATH = 201;
+
+
+  {
+    ER_NO_FRAGMENT_STRING_IN_PATH,
+        "\u7121\u6cd5\u5728\u8def\u5f91\u548c\u7247\u6bb5\u4e2d\u6307\u5b9a\u7247\u6bb5"},
+
+  
+   /** Cannot initialize URI with empty parameters   */
+  //public static final int ER_CANNOT_INIT_URI_EMPTY_PARMS = 202;
+
+
+  {
+    ER_CANNOT_INIT_URI_EMPTY_PARMS,
+        "\u7121\u6cd5\u8d77\u59cb\u8a2d\u5b9a\u7a7a\u767d\u53c3\u6578\u7684 URI"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMLITRSLT = 203;
+
+
+  {
+    ER_FAILED_CREATING_ELEMLITRSLT,
+        "\u5efa\u7acb ElemLiteralResult \u6848\u4f8b\u5931\u6557"},
+  
+  
+  // Earlier (JDK 1.4 XALAN 2.2-D11) at key code '204' the key name was ER_PRIORITY_NOT_PARSABLE
+  // In latest Xalan code base key name is  ER_VALUE_SHOULD_BE_NUMBER. This should also be taken care
+  //in locale specific files like XSLTErrorResources_de.java, XSLTErrorResources_fr.java etc.
+  //NOTE: Not only the key name but message has also been changed. - nb.
+
+  
+   /** Priority value does not contain a parsable number   */
+  //public static final int ER_VALUE_SHOULD_BE_NUMBER = 204;
+
+
+  {
+    ER_VALUE_SHOULD_BE_NUMBER,
+        "{0} \u7684\u503c\u61c9\u5305\u542b\u53ef\u5256\u6790\u7684\u6578\u5b57"},
+
+  
+   /**  Value for {0} should equal 'yes' or 'no'   */
+  //public static final int ER_VALUE_SHOULD_EQUAL = 205;
+
+
+  {
+    ER_VALUE_SHOULD_EQUAL,
+        " {0} \u7684\u503c\u61c9\u7b49\u65bc yes \u6216 no"},
+
+ 
+   /**  Failed calling {0} method   */
+  //public static final int ER_FAILED_CALLING_METHOD = 206;
+
+
+  {
+    ER_FAILED_CALLING_METHOD,
+        " \u547c\u53eb {0} \u65b9\u6cd5\u5931\u6557"},
+
+  
+   /** Failed creating ElemLiteralResult instance   */
+  //public static final int ER_FAILED_CREATING_ELEMTMPL = 207;
+
+
+  {
+    ER_FAILED_CREATING_ELEMTMPL,
+        "\u5efa\u7acb ElemTemplateElement \u6848\u4f8b\u5931\u6557"},
+
+  
+   /**  Characters are not allowed at this point in the document   */
+  //public static final int ER_CHARS_NOT_ALLOWED = 208;
+
+
+  {
+    ER_CHARS_NOT_ALLOWED,
+        "\u6587\u4ef6\u7684\u9019\u500b\u5730\u65b9\u4e0d\u5141\u8a31\u5b57\u5143"},
+
+  
+  /**  attribute is not allowed on the element   */
+  //public static final int ER_ATTR_NOT_ALLOWED = 209;
+
+
+  {
+    ER_ATTR_NOT_ALLOWED,
+        "{1} \u5143\u7d20\u4e0a\u4e0d\u5141\u8a31\u6709 \"{0}\" \u5c6c\u6027\uff01"},
+
+  
+  /**  Method not yet supported    */
+  //public static final int ER_METHOD_NOT_SUPPORTED = 210;
+
+
+  {
+    ER_METHOD_NOT_SUPPORTED,
+        "\u4e0d\u652f\u63f4\u65b9\u6cd5 "},
+
+ 
+  /**  Bad value    */
+  //public static final int ER_BAD_VALUE = 211;
+
+
+  {
+    ER_BAD_VALUE,
+     "{0} \u932f\u8aa4\u503c {1} "},
+
+  
+  /**  attribute value not found   */
+  //public static final int ER_ATTRIB_VALUE_NOT_FOUND = 212;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_FOUND,
+     "\u627e\u4e0d\u5230 {0} \u5c6c\u6027\u503c "},
+
+  
+  /**  attribute value not recognized    */
+  //public static final int ER_ATTRIB_VALUE_NOT_RECOGNIZED = 213;
+
+
+  {
+    ER_ATTRIB_VALUE_NOT_RECOGNIZED,
+     "\u4e0d\u80fd\u8fa8\u8b58 {0} \u5c6c\u6027\u503c "},
+
+
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_INCRSAXSRCFILTER_NOT_RESTARTABLE = 214;
+
+
+  {
+    ER_INCRSAXSRCFILTER_NOT_RESTARTABLE,
+     "IncrementalSAXSource_Filter \u76ee\u524d\u7121\u6cd5\u91cd\u65b0\u555f\u52d5"},
+
+  
+  /** IncrementalSAXSource_Filter not currently restartable   */
+  //public static final int ER_XMLRDR_NOT_BEFORE_STARTPARSE = 215;
+
+
+  {
+    ER_XMLRDR_NOT_BEFORE_STARTPARSE,
+     "XMLReader \u4e0d\u5728 startParse \u8981\u6c42\u4e4b\u524d"},
+
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NULL_URI_NAMESPACE = 216;
+
+
+  {
+    ER_NULL_URI_NAMESPACE,
+     "\u6b63\u5728\u5617\u8a66\u4f7f\u7528\u7a7a URI \u7522\u751f\u540d\u7a31\u7a7a\u9593\u524d\u7f6e"},
+   
+   
+  // Following are the new ERROR keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+  
+  /** Attempting to generate a namespace prefix with a null URI   */
+  //public static final int ER_NUMBER_TOO_BIG = 217;
+
+
+  {
+    ER_NUMBER_TOO_BIG,
+     "\u8a66\u5716\u683c\u5f0f\u5316\u6bd4\u6700\u5927\u7684 Long \u6574\u6578\u9084\u8981\u5927\u7684\u6578\u5b57"},
+
+  
+  //ER_CANNOT_FIND_SAX1_DRIVER
+  
+  //public static final int  ER_CANNOT_FIND_SAX1_DRIVER = 218;
+  
+
+  {
+  ER_CANNOT_FIND_SAX1_DRIVER,
+   "\u7121\u6cd5\u627e\u5230 SAX1 \u9a45\u52d5\u7a0b\u5f0f\u985e\u5225 {0}"},
+
+
+  //ER_SAX1_DRIVER_NOT_LOADED
+    //public static final int  ER_SAX1_DRIVER_NOT_LOADED = 219;
+
+
+  {
+  ER_SAX1_DRIVER_NOT_LOADED,
+   "\u5df2\u627e\u5230 SAX1 \u9a45\u52d5\u7a0b\u5f0f\u985e\u5225 {0}\uff0c\u4f46\u662f\u7121\u6cd5\u8f09\u5165"},
+
+
+  //ER_SAX1_DRIVER_NOT_INSTANTIATED
+  //public static final int  ER_SAX1_DRIVER_NOT_INSTANTIATED = 220 ;
+
+
+  {
+    ER_SAX1_DRIVER_NOT_INSTANTIATED,
+     "\u5df2\u8f09\u5165 SAX1 \u9a45\u52d5\u7a0b\u5f0f\u985e\u5225 {0}\uff0c\u4f46\u662f\u7121\u6cd5\u5c07\u5176\u5be6\u4f8b\u5316"},
+
+
+
+  // ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER
+    //public static final int ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER = 221;
+
+  
+    {
+     ER_SAX1_DRIVER_NOT_IMPLEMENT_PARSER,
+      "SAX1 \u9a45\u52d5\u7a0b\u5f0f\u985e\u5225 {0} \u4e0d\u57f7\u884c org.xml.sax.Parser"},
+  
+
+  // ER_PARSER_PROPERTY_NOT_SPECIFIED
+    //public static final int  ER_PARSER_PROPERTY_NOT_SPECIFIED = 222;
+
+  
+    {
+      ER_PARSER_PROPERTY_NOT_SPECIFIED,
+       "\u672a\u6307\u5b9a\u7cfb\u7d71\u5c6c\u6027 org.xml.sax.parser"},
+  
+
+  //ER_PARSER_ARG_CANNOT_BE_NULL
+    //public static final int  ER_PARSER_ARG_CANNOT_BE_NULL = 223 ;
+
+  
+    {
+      ER_PARSER_ARG_CANNOT_BE_NULL,
+       "\u5256\u6790\u5668\u5f15\u6578\u4e0d\u80fd\u70ba\u7a7a"},
+  
+
+
+  // ER_FEATURE
+    //public static final int  ER_FEATURE = 224;
+
+  
+    {
+      ER_FEATURE,
+       "\u529f\u80fd\uff1aa {0}"},
+  
+
+
+  // ER_PROPERTY
+    //public static final int ER_PROPERTY = 225 ;
+
+  
+    {
+      ER_PROPERTY,
+       "\u5c6c\u6027\uff1aa {0}"},
+  
+ 
+  // ER_NULL_ENTITY_RESOLVER
+    //public static final int ER_NULL_ENTITY_RESOLVER  = 226;
+
+  
+    {
+      ER_NULL_ENTITY_RESOLVER,
+      "\u7a7a\u5be6\u9ad4\u89e3\u6790\u5668"},
+  
+
+  // ER_NULL_DTD_HANDLER
+    //public static final int  ER_NULL_DTD_HANDLER = 227 ;
+
+  
+    {
+      ER_NULL_DTD_HANDLER,
+       "\u7a7a DTD \u8655\u7406\u7a0b\u5f0f"},
+  
+
+  // No Driver Name Specified!
+    //public static final int ER_NO_DRIVER_NAME_SPECIFIED = 228;
+  
+    {
+      ER_NO_DRIVER_NAME_SPECIFIED,
+       "\u672a\u6307\u5b9a\u9a45\u52d5\u7a0b\u5f0f\u540d\u7a31\uff01"},
+  
+
+
+  // No URL Specified!
+    //public static final int ER_NO_URL_SPECIFIED = 229;
+  
+    {
+      ER_NO_URL_SPECIFIED,
+       "\u672a\u6307\u5b9a URL\uff01"},
+  
+
+
+  // Pool size is less than 1!
+    //public static final int ER_POOLSIZE_LESS_THAN_ONE = 230;
+  
+    {
+      ER_POOLSIZE_LESS_THAN_ONE,
+       "\u5132\u5b58\u5340\u5c0f\u65bc 1\uff01"},
+  
+
+
+  // Invalid Driver Name Specified!
+    //public static final int ER_INVALID_DRIVER_NAME = 231;
+  
+    {
+      ER_INVALID_DRIVER_NAME,
+       "\u6307\u5b9a\u7684\u9a45\u52d5\u7a0b\u5f0f\u540d\u7a31\u7121\u6548\uff01"},
+  
+
+
+
+  // ErrorListener
+    //public static final int ER_ERRORLISTENER = 232;
+  
+    {
+      ER_ERRORLISTENER,
+       "ErrorListener"},
+  
+
+
+  // Programmer's error! expr has no ElemTemplateElement parent!
+    //public static final int ER_ASSERT_NO_TEMPLATE_PARENT = 233;
+  
+    {
+      ER_ASSERT_NO_TEMPLATE_PARENT,
+       "\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\u7684\u932f\u8aa4\uff01expr \u6c92\u6709 ElemTemplateElement \u7236\uff01"},
+  
+
+
+  // Programmer's assertion in RundundentExprEliminator: {0}
+    //public static final int ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR = 234;
+  
+    {
+      ER_ASSERT_REDUNDENT_EXPR_ELIMINATOR,
+       "\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\u5728 RundundentExprEliminator \u4e2d\u7684\u5224\u65b7\uff1a{0}"},
+  
+
+  // Axis traverser not supported: {0}
+    //public static final int ER_AXIS_TRAVERSER_NOT_SUPPORTED = 235;
+  
+    {
+      ER_AXIS_TRAVERSER_NOT_SUPPORTED,
+       "\u4e0d\u652f\u63f4\u8ef8\u904d\u6b77\u5668\uff1a{0}"},
+  
+
+  // ListingErrorHandler created with null PrintWriter!
+    //public static final int ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER = 236;
+  
+    {
+      ER_ERRORHANDLER_CREATED_WITH_NULL_PRINTWRITER,
+       "\u5efa\u7acb\u7684 ListingErrorHandler \u5177\u6709\u7a7a PrintWriter\uff01"},
+  
+
+  // {0}is not allowed in this position in the stylesheet!
+    //public static final int ER_NOT_ALLOWED_IN_POSITION = 237;
+  
+    {
+      ER_NOT_ALLOWED_IN_POSITION,
+       "\u5728\u6a23\u5f0f\u8868\u4e2d\uff0c\u6b64\u4f4d\u7f6e\u4e0d\u5141\u8a31\u51fa\u73fe {0}\uff01"},
+  
+
+  // Non-whitespace text is not allowed in this position in the stylesheet!
+    //public static final int ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION = 238;
+  
+    {
+      ER_NONWHITESPACE_NOT_ALLOWED_IN_POSITION,
+       "\u5728\u6a23\u5f0f\u8868\u4e2d\uff0c\u6b64\u4f4d\u7f6e\u53ea\u80fd\u662f\u7a7a\u767d\uff01"},
+  
+
+  // This code is shared with warning codes.
+  // Illegal value: {1} used for CHAR attribute: {0}.  An attribute of type CHAR must be only 1 character!
+    //public static final int INVALID_TCHAR = 239;
+    // SystemId Unknown
+  
+    {
+      INVALID_TCHAR,
+       "\u4e0d\u6b63\u78ba\u7684\u503c\uff1a{1} \u88ab\u7528\u65bc CHAR \u5c6c\u6027\uff1a{0}\u3002  CHAR \u985e\u578b\u7684\u5c6c\u6027\u53ea\u80fd\u662f 1 \u500b\u5b57\u5143\uff01"},
+  
+
+    //public static final int ER_SYSTEMID_UNKNOWN = 240;
+  
+    {
+      ER_SYSTEMID_UNKNOWN,
+       "SystemId \u672a\u77e5"},
+  
+
+   // Location of error unknown
+    //public static final int ER_LOCATION_UNKNOWN = 241;
+  
+    {
+      ER_LOCATION_UNKNOWN,
+       "\u672a\u77e5\u7684\u932f\u8aa4\u4f4d\u7f6e"},
+  
+
+   // Note to translators:  The following message is used if the value of
+   // an attribute in a stylesheet is invalid.  "QNAME" is the XML data-type of
+   // the attribute, and should not be translated.  The substitution text {1} is
+   // the attribute value and {0} is the attribute name.
+   // INVALID_QNAME
+
+  //The following codes are shared with the warning codes...
+  // Illegal value: {1} used for QNAME attribute: {0}
+  //public static final int INVALID_QNAME = 242;
+
+  {
+    INVALID_QNAME,
+     "\u4e0d\u6b63\u78ba\u7684\u503c\uff1aa {1} \u88ab\u7528\u65bc QNAME \u5c6c\u6027\uff1aa {0}"},
+
+
+   // Note to translators:  The following message is used if the value of
+   // an attribute in a stylesheet is invalid.  "ENUM" is the XML data-type of
+   // the attribute, and should not be translated.  The substitution text {1} is
+   // the attribute value, {0} is the attribute name, and {2} is a list of valid
+   // values.
+   // INVALID_ENUM
+
+   // Illegal value:a {1} used for ENUM attribute:a {0}.  Valid values are:a {2}.
+   //public static final int INVALID_ENUM = 243;
+ 
+   {
+     INVALID_ENUM,
+      "\u4e0d\u6b63\u78ba\u7684\u503c\uff1aa {1} \u88ab\u7528\u65bc ENUM \u5c6c\u6027\uff1aa {0}\u3002  \u6709\u6548\u503c\u70ba\uff1aa {2}\u3002"},
+ 
+
+   // Note to translators:  The following message is used if the value of
+   // an attribute in a stylesheet is invalid.  "NMTOKEN" is the XML data-type
+   // of the attribute, and should not be translated.  The substitution text {1} is
+   // the attribute value and {0} is the attribute name.
+   // INVALID_NMTOKEN
+
+   // Illegal value:a {1} used for NMTOKEN attribute:a {0}.
+   //public static final int INVALID_NMTOKEN = 244;
+ 
+   {
+     INVALID_NMTOKEN,
+      "\u4e0d\u6b63\u78ba\u7684\u503c\uff1aa {1} \u88ab\u7528\u65bc NMTOKEN \u5c6c\u6027\uff1aa {0}"},
+ 
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "NCNAME" is the XML data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NCNAME
+
+  // Illegal value:a {1} used for NCNAME attribute:a {0}.
+  //public static final int INVALID_NCNAME = 245;
+
+  {
+    INVALID_NCNAME,
+     "\u4e0d\u6b63\u78ba\u7684\u503c\uff1aa {1} \u88ab\u7528\u65bc NCNAME \u5c6c\u6027\uff1aa {0}"},
+
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "boolean" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_BOOLEAN
+ 
+  // Illegal value:a {1} used for boolean attribute:a {0}.
+  //public static final int INVALID_BOOLEAN = 246;
+
+
+  {
+    INVALID_BOOLEAN,
+     "\u4e0d\u6b63\u78ba\u7684\u503c\uff1aa {1} \u88ab\u7528\u65bc boolean \u5c6c\u6027\uff1aa {0}"},
+
+
+  // Note to translators:  The following message is used if the value of
+  // an attribute in a stylesheet is invalid.  "number" is the XSLT data-type
+  // of the attribute, and should not be translated.  The substitution text {1} is
+  // the attribute value and {0} is the attribute name.
+  // INVALID_NUMBER
+
+  // Illegal value:a {1} used for number attribute:a {0}.
+  //public static final int INVALID_NUMBER = 247;
+
+  {
+    INVALID_NUMBER,
+     "\u4e0d\u6b63\u78ba\u7684\u503c\uff1aa {1} \u88ab\u7528\u65bc number \u5c6c\u6027\uff1aa {0}"},
+
+
+
+  // End of shared codes...
+
+  // Note to translators:  A "match pattern" is a special form of XPath expression
+  // that is used for matching patterns.  The substitution text is the name of
+  // a function.  The message indicates that when this function is referenced in
+  // a match pattern, its argument must be a string literal (or constant.)
+  // ER_ARG_LITERAL - new error message for bugzilla //5202
+
+   // Argument to {0} in match pattern must be a literal.
+   //public static final int ER_ARG_LITERAL             = 248;
+ 
+   {
+     ER_ARG_LITERAL,
+      "\u5728\u76f8\u7b26\u578b\u6a23\u4e2d {0} \u7684\u5f15\u6578\u5fc5\u9808\u662f\u6587\u5b57\u3002"},
+ 
+
+  // Note to translators:  The following message indicates that two definitions of
+  // a variable.  A "global variable" is a variable that is accessible everywher
+  // in the stylesheet.
+  // ER_DUPLICATE_GLOBAL_VAR - new error message for bugzilla #790
+
+   // Duplicate global variable declaration.
+   //public static final int ER_DUPLICATE_GLOBAL_VAR    = 249;
+ 
+   {
+     ER_DUPLICATE_GLOBAL_VAR,
+      "\u91cd\u8907\u7684\u5168\u57df\u8b8a\u6578\u5ba3\u544a\u3002"},
+ 
+
+
+  // Note to translators:  The following message indicates that two definitions of
+  // a variable were encountered.
+  // ER_DUPLICATE_VAR - new error message for bugzilla #790
+
+   // Duplicate variable declaration.
+   //public static final int ER_DUPLICATE_VAR           = 250;
+ 
+   {
+     ER_DUPLICATE_VAR,
+      "\u91cd\u8907\u7684\u8b8a\u6578\u5ba3\u544a\u3002"},
+ 
+
+      // Note to translators:  "xsl:template, "name" and "match" are XSLT keywords
+      // which must not be translated.
+      // ER_TEMPLATE_NAME_MATCH - new error message for bugzilla #789
+
+  // xsl:template must have a name or match attribute (or both)
+  //public static final int ER_TEMPLATE_NAME_MATCH     = 251;
+
+  {
+    ER_TEMPLATE_NAME_MATCH,
+     "xsl:template \u5fc5\u9808\u6709\u4e00\u500b\u540d\u7a31\u6216\u76f8\u7b26\u5c6c\u6027 (\u6216\u5169\u8005\u5747\u6709)"},
+
+
+    // Note to translators:  "exclude-result-prefixes" is an XSLT keyword which
+    // should not be translated.  The message indicates that a namespace prefix
+    // encountered as part of the value of the exclude-result-prefixes attribute
+    // was in error.
+    // ER_INVALID_PREFIX - new error message for bugzilla #788
+
+   // Prefix in exclude-result-prefixes is not valid:a {0}
+   //public static final int ER_INVALID_PREFIX          = 252;
+ 
+   {
+     ER_INVALID_PREFIX,
+      "exclude-result-prefixes \u4e2d\u7684\u524d\u7f6e\u7121\u6548\uff1aa {0}"},
+ 
+
+     // Note to translators:  An "attribute set" is a set of attributes that can be
+     // added to an element in the output document as a group.  The message indicates
+     // that there was a reference to an attribute set named {0} that was never
+     // defined.
+     // ER_NO_ATTRIB_SET - new error message for bugzilla #782
+
+     // attribute-set named {0} does not exist
+     //public static final int ER_NO_ATTRIB_SET           = 253;
+   
+     {
+       ER_NO_ATTRIB_SET,
+        "\u540d\u70ba {0} \u7684 attribute-set \u4e0d\u5b58\u5728"},
+   
+
+  // Warnings...
+
+  /** WG_FOUND_CURLYBRACE          */
+  //public static final int WG_FOUND_CURLYBRACE = 1;
+
+
+  {
+    WG_FOUND_CURLYBRACE,
+      "\u627e\u5230 '}' \u4f46\u6c92\u6709\u958b\u555f\u7684\u5c6c\u6027\u7bc4\u672c\uff01"},
+
+
+  /** WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR          */
+  //public static final int WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR = 2;
+
+
+  {
+    WG_COUNT_ATTRIB_MATCHES_NO_ANCESTOR,
+      "\u8b66\u544a\uff1acount \u5c6c\u6027\u4e0d\u7b26\u5408 xsl:number \u4e2d\u7684\u7956\u5148\u7bc0\u9ede\uff01\u76ee\u6a19 = {0}"},
+
+
+  /** WG_EXPR_ATTRIB_CHANGED_TO_SELECT          */
+  //public static final int WG_EXPR_ATTRIB_CHANGED_TO_SELECT = 3;
+
+
+  {
+    WG_EXPR_ATTRIB_CHANGED_TO_SELECT,
+      "\u820a\u8a9e\u6cd5\uff1a'expr' \u5c6c\u6027\u7684\u540d\u7a31\u5df2\u8b8a\u66f4\u70ba 'select'\u3002"},
+
+
+  /** WG_NO_LOCALE_IN_FORMATNUMBER          */
+  //public static final int WG_NO_LOCALE_IN_FORMATNUMBER = 4;
+
+
+  {
+    WG_NO_LOCALE_IN_FORMATNUMBER,
+      "Xalan \u5c1a\u672a\u8655\u7406 format-number \u51fd\u5f0f\u4e2d\u7684\u8a9e\u8a00\u74b0\u5883\u540d\u7a31\u3002"},
+
+
+  /** WG_LOCALE_NOT_FOUND          */
+  //public static final int WG_LOCALE_NOT_FOUND = 5;
+
+
+  {
+    WG_LOCALE_NOT_FOUND,
+      "\u8b66\u544a\uff1a\u627e\u4e0d\u5230 xml:lang={0} \u7684\u8a9e\u8a00\u74b0\u5883"},
+
+
+  /** WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 6;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "\u7121\u6cd5\u5f9e\uff1a {0} \u7522\u751f URL"},
+
+
+  /** WG_CANNOT_LOAD_REQUESTED_DOC          */
+  //public static final int WG_CANNOT_LOAD_REQUESTED_DOC = 7;
+
+
+  {
+    WG_CANNOT_LOAD_REQUESTED_DOC,
+      "\u7121\u6cd5\u8f09\u5165\u6240\u8981\u6c42\u7684\u6587\u4ef6\uff1a{0}"},
+
+
+  /** WG_CANNOT_FIND_COLLATOR          */
+  //public static final int WG_CANNOT_FIND_COLLATOR = 8;
+
+
+  {
+    WG_CANNOT_FIND_COLLATOR,
+      "\u627e\u4e0d\u5230 <sort xml:lang={0} \u7684\u7406\u5e8f\u5668"},
+
+
+  /** WG_FUNCTIONS_SHOULD_USE_URL          */
+  //public static final int WG_FUNCTIONS_SHOULD_USE_URL = 9;
+
+
+  {
+    WG_FUNCTIONS_SHOULD_USE_URL,
+      "\u820a\u8a9e\u6cd5\uff1a\u51fd\u5f0f\u6307\u4ee4\u61c9\u4f7f\u7528 URL {0}"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_UTF8          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_UTF8 = 10;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_UTF8,
+      "\u4e0d\u652f\u63f4\u7de8\u78bc\uff1a{0}\uff0c\u4f7f\u7528 UTF-8"},
+
+
+  /** WG_ENCODING_NOT_SUPPORTED_USING_JAVA          */
+  //public static final int WG_ENCODING_NOT_SUPPORTED_USING_JAVA = 11;
+
+
+  {
+    WG_ENCODING_NOT_SUPPORTED_USING_JAVA,
+      "\u4e0d\u652f\u63f4\u7de8\u78bc\uff1a{0}\uff0c\u4f7f\u7528 Java {1}"},
+
+
+  /** WG_SPECIFICITY_CONFLICTS          */
+  //public static final int WG_SPECIFICITY_CONFLICTS = 12;
+
+
+  {
+    WG_SPECIFICITY_CONFLICTS,
+      "\u627e\u5230\u5177\u9ad4\u885d\u7a81\uff1a{0} \u5c07\u4f7f\u7528\u5728\u6a23\u5f0f\u8868\u4e2d\u627e\u5230\u7684\u6700\u5f8c\u4e00\u500b\u3002"},
+
+
+  /** WG_PARSING_AND_PREPARING          */
+  //public static final int WG_PARSING_AND_PREPARING = 13;
+
+
+  {
+    WG_PARSING_AND_PREPARING,
+      "========= \u5256\u6790\u53ca\u6e96\u5099 {0} =========="},
+
+
+  /** WG_ATTR_TEMPLATE          */
+  //public static final int WG_ATTR_TEMPLATE = 14;
+
+
+  {
+    WG_ATTR_TEMPLATE, "Attr \u7bc4\u672c\uff0c{0}"},
+
+
+  /** WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE          */
+  //public static final int WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE = 15;
+
+
+  {
+    WG_CONFLICT_BETWEEN_XSLSTRIPSPACE_AND_XSLPRESERVESPACE,
+      "xsl:strip-space \u548c xsl:preserve-space \u4e4b\u9593\u767c\u751f\u7b26\u5408\u885d\u7a81"},
+
+
+  /** WG_ATTRIB_NOT_HANDLED          */
+  //public static final int WG_ATTRIB_NOT_HANDLED = 16;
+
+
+  {
+    WG_ATTRIB_NOT_HANDLED,
+      "Xalan \u5c1a\u672a\u8655\u7406 {0} \u5c6c\u6027\uff01"},
+
+
+  /** WG_NO_DECIMALFORMAT_DECLARATION          */
+  //public static final int WG_NO_DECIMALFORMAT_DECLARATION = 17;
+
+
+  {
+    WG_NO_DECIMALFORMAT_DECLARATION,
+      "\u627e\u4e0d\u5230\u5341\u9032\u4f4d\u683c\u5f0f\u7684\u5ba3\u544a\uff1a{0}"},
+
+
+  /** WG_OLD_XSLT_NS          */
+  //public static final int WG_OLD_XSLT_NS = 18;
+
+
+  {
+    WG_OLD_XSLT_NS, "XSLT \u540d\u7a31\u7a7a\u9593\u907a\u6f0f\u6216\u4e0d\u6b63\u78ba\u3002"},
+
+
+  /** WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED          */
+  //public static final int WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED = 19;
+
+
+  {
+    WG_ONE_DEFAULT_XSLDECIMALFORMAT_ALLOWED,
+      "\u50c5\u5141\u8a31\u4e00\u500b\u9810\u8a2d xsl:decimal-format \u5ba3\u544a\u3002"},
+
+
+  /** WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE          */
+  //public static final int WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE = 20;
+
+
+  {
+    WG_XSLDECIMALFORMAT_NAMES_MUST_BE_UNIQUE,
+      "xsl:decimal-format \u540d\u7a31\u5fc5\u9808\u662f\u552f\u4e00\u7684\u3002 \"{0}\" \u540d\u7a31\u91cd\u8907\u3002"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE = 21;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE,
+      "{0} \u542b\u6709\u4e0d\u5408\u898f\u5247\u7684\u5c6c\u6027\uff1a{1}"},
+
+
+  /** WG_COULD_NOT_RESOLVE_PREFIX          */
+  //public static final int WG_COULD_NOT_RESOLVE_PREFIX = 22;
+
+
+  {
+    WG_COULD_NOT_RESOLVE_PREFIX,
+      "\u7121\u6cd5\u89e3\u8b6f\u540d\u7a31\u7a7a\u9593\u524d\u7f6e\uff1a{0}\u3002\u7bc0\u9ede\u88ab\u5ffd\u7565\u3002"},
+
+
+  /** WG_STYLESHEET_REQUIRES_VERSION_ATTRIB          */
+  //public static final int WG_STYLESHEET_REQUIRES_VERSION_ATTRIB = 23;
+
+
+  {
+    WG_STYLESHEET_REQUIRES_VERSION_ATTRIB,
+      "xsl:stylesheet \u9700\u8981 'version' \u5c6c\u6027\uff01"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_NAME          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_NAME = 24;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_NAME,
+      "\u4e0d\u5408\u898f\u5247\u7684\u5c6c\u6027\u540d\u7a31\uff1a{0}"},
+
+
+  /** WG_ILLEGAL_ATTRIBUTE_VALUE          */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_VALUE = 25;
+
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_VALUE,
+      "\u5c6c\u6027 {0} \u4f7f\u7528\u4e86\u4e0d\u5408\u898f\u5247\u7684\u503c\uff1a{1}"},
+
+
+  /** WG_EMPTY_SECOND_ARG          */
+  //public static final int WG_EMPTY_SECOND_ARG = 26;
+
+
+  {
+    WG_EMPTY_SECOND_ARG,
+      "\u5f9e\u6587\u4ef6\u51fd\u5f0f\u7b2c\u4e8c\u500b\u5f15\u6578\u7522\u751f\u7684\u7bc0\u9ede\u96c6\u662f\u7a7a\u503c\u3002\u5c07\u4f7f\u7528\u7b2c\u4e00\u500b\u5f15\u6578\u3002"},
+
+
+// Following are the new WARNING keys added in XALAN code base after Jdk 1.4 (Xalan 2.2-D11)
+
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.
+    // WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML
+ 
+
+  /** WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML = 27;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NAME_CANT_BE_XML,
+     "xsl:processing-instruction \u540d\u7a31\u4e4b 'name' \u5c6c\u6027\u7684\u503c\u4e0d\u80fd\u662f 'xml'"},
+
+ 
+    // Note to translators:  "name" and "xsl:processing-instruction" are keywords
+    // and must not be translated.  "NCName" is an XML data-type and must not be
+    // translated.
+    // WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME
+ 
+  /** WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME          */
+  //public static final int WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME = 28;
+
+  {
+     WG_PROCESSINGINSTRUCTION_NOTVALID_NCNAME,
+     "xsl:processing-instruction \u4e4b ''name'' \u5c6c\u6027\u7684\u503c\u5fc5\u9808\u662f\u4e00\u500b\u6709\u6548\u7684 NCName\uff1aa {0}"},
+
+
+    // Note to translators:  This message is reported if the stylesheet that is
+    // being processed attempted to construct an XML document with an attribute in a
+    // place other than on an element.  The substitution text specifies the name of
+    // the attribute.
+    // WG_ILLEGAL_ATTRIBUTE_POSITION
+
+  /** WG_ILLEGAL_ATTRIBUTE_POSITION         */
+  //public static final int WG_ILLEGAL_ATTRIBUTE_POSITION = 29;
+
+  {
+    WG_ILLEGAL_ATTRIBUTE_POSITION,
+     "\u7121\u6cd5\u5728\u7522\u751f\u5b50\u7bc0\u9ede\u4e4b\u5f8c\u6216\u7522\u751f\u5143\u7d20\u4e4b\u524d\u52a0\u5165\u5c6c\u6027 {0}\u3002  \u5c6c\u6027\u5c07\u88ab\u5ffd\u7565\u3002"},
+
+
+    // WHY THERE IS A GAP B/W NUMBERS in the XSLTErrorResources properties file?
+ 
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "zh_TW"},
+  { "help_language", "zh_TW"},
+  { "language", "zh_TW"},
+    { "BAD_CODE",
+      "createMessage \u7684\u53c3\u6578\u8d85\u51fa\u754c\u9650"},
+    { "FORMAT_FAILED",
+      "\u5728 messageFormat \u547c\u53eb\u671f\u9593\u4e1f\u51fa\u7570\u5e38"},
+    { "version", ">>>>>>> Xalan \u7248\u672c "},
+    {  "version2", "<<<<<<<"},
+    { "yes", "\u662f"},
+    { "line", "\u884c #"},
+    { "column", "\u76f4\u6b04 #"},
+    { "xsldone", "XSLProcessor: done"},
+    { "xslProc_option",
+    "Xalan-J \u6307\u4ee4\u884c Process \u985e\u5225\u9078\u9805\uff1a"},
+    { "optionIN", "    -IN inputXMLURL"},
+    { "optionXSL", "   [-XSL XSLTransformationURL]"},
+    { "optionOUT", "   [-OUT outputFileName]"},
+    { "optionLXCIN", "   [-LXCIN compiledStylesheetFileNameIn]"},
+    { "optionLXCOUT",
+      "   [-LXCOUT compiledStylesheetFileNameOutOut]"},
+    { "optionPARSER",
+      "   [-PARSER \u5256\u6790\u5668\u95dc\u806f\u5225\u540d\u7684\u5b8c\u6574\u540d\u7a31]"},
+    { "optionE",
+    "   [-E (\u4e0d\u5c55\u958b\u5be6\u9ad4\u53c3\u7167)]"},
+    { "optionV",
+    "   [-E (\u4e0d\u5c55\u958b\u5be6\u9ad4\u53c3\u7167)]"},
+    { "optionQC",
+      "   [-QC (\u7121\u8072\u578b\u6a23\u885d\u7a81\u8b66\u544a)]"},
+    { "optionQ",
+    "   [-Q  (\u7121\u8072\u6a21\u5f0f)]"},
+    { "optionLF",
+      "   [-LF (\u53ea\u5728\u8f38\u51fa\u4e0a\u4f7f\u7528\u63db\u884c {\u9810\u8a2d\u662f CR/LF})]"},
+    { "optionCR",
+      "   [-CR (\u53ea\u5728\u8f38\u51fa\u4e0a\u4f7f\u7528\u63db\u884c\u9375 {\u9810\u8a2d\u662f CR/LF})]"},
+    { "optionESCAPE",
+      "   [-ESCAPE (\u8981\u9038\u51fa\u7684\u5b57\u5143 {\u9810\u8a2d\u662f <>&\"\'\\r\\n})]"},
+    { "optionINDENT",
+      "   [-INDENT (\u63a7\u5236\u8981\u5167\u7e2e\u7684\u7a7a\u683c\u6578 {\u9810\u8a2d\u662f 0})]"},
+    { "optionTT",
+      "   [-TT (\u547c\u53eb\u6642\u8ffd\u8e64\u7bc4\u672c\u3002)]"},
+    { "optionTG",
+      "   [-TG (\u8ffd\u8e64\u6bcf\u4e00\u500b\u7522\u751f\u4e8b\u4ef6\u3002)]"},
+    { "optionTS",
+    "   [-TS (\u8ffd\u8e64\u6bcf\u4e00\u500b\u9078\u53d6\u4e8b\u4ef6\u3002)]"},
+    { "optionTTC",
+      "   [-TTC (\u8ffd\u8e64\u8655\u7406\u4e2d\u7684\u7bc4\u672c\u5b50\u9805\u3002)]"},
+    {"optionTCLASS",
+      "   [-TCLASS (\u8ffd\u8e64\u5ef6\u4f38\u7a0b\u5f0f\u7684 TraceListener \u985e\u5225\u3002)]"},
+    { "optionVALIDATE",
+      "   [-VALIDATE (\u8a2d\u5b9a\u662f\u5426\u767c\u751f\u9a57\u8b49\u3002\u4f9d\u9810\u8a2d\u9a57\u8b49\u662f\u95dc\u9589\u7684\u3002)]"},
+    { "optionEDUMP",
+      "   [-EDUMP {\u53ef\u9078\u7528\u7684\u6a94\u6848\u540d\u7a31} (\u767c\u751f\u932f\u8aa4\u6642\u57f7\u884c stackdump\u3002)]"},
+    { "optionXML",
+      "   [-XML (\u4f7f\u7528 XML \u683c\u5f0f\u88fd\u4f5c\u5668\u53ca\u65b0\u589e XML \u8868\u982d\u3002)]"},
+    { "optionTEXT",
+      "   [-TEXT (\u4f7f\u7528\u7c21\u5f0f\u6587\u5b57\u683c\u5f0f\u5316\u7a0b\u5f0f\u3002)]"},
+    { "optionHTML",
+    "   [-HTML (\u4f7f\u7528 HTML \u683c\u5f0f\u88fd\u4f5c\u5668\u3002)]"},
+    { "optionPARAM",
+      "   [-PARAM \u540d\u7a31\u8868\u793a\u5f0f (\u8a2d\u5b9a\u6a23\u5f0f\u8868\u53c3\u6578)]"},
+    { "noParsermsg1",
+    "XSL \u8655\u7406\u4e0d\u6210\u529f\u3002"},
+    { "noParsermsg2",
+    "** \u627e\u4e0d\u5230\u5256\u6790\u5668 **"},
+    { "noParsermsg3",
+    "\u8acb\u6aa2\u67e5\u985e\u5225\u8def\u5f91\u3002"},
+    { "noParsermsg4",
+      "\u5982\u679c\u60a8\u6c92\u6709 IBM \u7684 XML Parser for Java\uff0c\u53ef\u4e0b\u8f09\u81ea "},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+    { "optionURIRESOLVER",
+    "   [-URIRESOLVER \u5b8c\u6574\u7684\u985e\u5225\u540d\u7a31 (URIResolver \u7528\u4f86\u89e3\u8b6f URI)]"},
+    { "optionENTITYRESOLVER",
+    "   [-ENTITYRESOLVER \u5b8c\u6574\u7684\u985e\u5225\u540d\u7a31 (EntityResolver \u7528\u4f86\u89e3\u8b6f\u5be6\u9ad4)]"},
+    { "optionCONTENTHANDLER",
+    "   [-CONTENTHANDLER \u5b8c\u6574\u7684\u985e\u5225\u540d\u7a31 (ContentHandler \u7528\u4f86\u4e32\u5217\u5316\u8f38\u51fa)]"},
+    { "optionLINENUMBERS",
+    "   [-L \u4f7f\u7528\u539f\u59cb\u6587\u4ef6\u7684\u884c\u865f]"},
+    
+    // Following are the new options added in XSLTErrorResources.properties files after Jdk 1.4 (Xalan 2.2-D11)
+
+
+    { "optionMEDIA",
+    " [-MEDIA mediaType (\u4f7f\u7528\u5a92\u9ad4\u5c6c\u6027\u5c0b\u627e\u8207\u6587\u4ef6\u95dc\u806f\u7684\u6a23\u5f0f\u8868\u3002)]"},
+    { "optionFLAVOR",
+    " [-FLAVOR flavorName (\u660e\u78ba\u662f\u4f7f\u7528 s2s=SAX \u9084\u662f d2d=DOM \u4f86\u57f7\u884c\u8f49\u63db\u3002)] "}, // Added by sboag/scurcuru; experimental
+    { "optionDIAG",
+    " [-DIAG (\u5217\u5370\u8f49\u63db\u4f5c\u696d\u82b1\u8cbb\u7684\u7e3d\u6beb\u79d2\u6578\u3002)]"},
+    { "optionINCREMENTAL",
+    " [-INCREMENTAL (\u900f\u904e\u5c07 http://xml.apache.org/xalan/features/incremental \u8a2d\u5b9a\u70ba\u300c\u771f\u300d\uff0c\u8981\u6c42\u905e\u589e\u7684 DTM \u5efa\u69cb\u3002)]"},
+    { "optionNOOPTIMIMIZE",
+    " [-NOOPTIMIMIZE (\u900f\u904e\u5c07 http://xml.apache.org/xalan/features/optimize \u8a2d\u5b9a\u70ba\u300c\u5047\u300d\uff0c\u8981\u6c42\u7121\u6a23\u5f0f\u8868\u6700\u4f73\u5316\u8655\u7406\u3002)]"},
+    { "optionRL",
+    " [-RL \u5faa\u74b0\u9650\u5236 (\u5047\u8a2d\u5728\u6a23\u5f0f\u8868\u5faa\u74b0\u6df1\u5ea6\u4e0a\u6578\u5b57\u9650\u5236\u3002)]"},
+    { "optionXO",
+    " [-XO [transletName] (\u6307\u5b9a\u7522\u751f\u7684 translet \u540d\u7a31)]"},
+    { "optionXD",
+    " [-XD destinationDirectory (\u6307\u5b9a translet \u7684\u76ee\u6a19\u76ee\u9304)]"},
+    { "optionXJ",
+    " [-XJ jarfile (\u5c07 translet \u985e\u5225\u5c01\u88dd\u6210\u540d\u70ba <jarfile> \u7684 jar \u6a94)]"},
+    { "optionXP",
+    " [-XP package (\u6307\u5b9a\u6240\u6709 translet \u985e\u5225\u7684\u5c01\u88dd\u540d\u7a31\u524d\u7f6e)]"}
+
+		
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** String for use when a bad error code was encountered.    */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** String for use when formatting of the error string failed.   */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** General error string.   */
+  public static final String ERROR_STRING = "#error";
+
+  /** String to prepend to error messages.  */
+  public static final String ERROR_HEADER = "\u932f\u8aa4\uff1a";
+
+  /** String to prepend to warning messages.    */
+  public static final String WARNING_HEADER = "\u8b66\u544a\uff1a";
+
+  /** String to specify the XSLT module.  */
+  public static final String XSL_HEADER = "XSLT ";
+
+  /** String to specify the XML parser module.  */
+  public static final String XML_HEADER = "XML ";
+
+  /** I don't think this is used any more.
+   * @deprecated  */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the lookup table. 
+   *
+   * @return The int to message lookup table.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
diff --git a/src/org/apache/xalan/res/XSLTInfo.properties b/src/org/apache/xalan/res/XSLTInfo.properties
index 2d9e39d..88babfc 100644
--- a/src/org/apache/xalan/res/XSLTInfo.properties
+++ b/src/org/apache/xalan/res/XSLTInfo.properties
@@ -10,5 +10,5 @@
 # Since XMLReaderFactory doesn't have it's own properties file, 
 # but simply reads the system properties, Xalan tries to load 
 # this value into the system properties.
-org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
-# org.xml.sax.driver=org.apache.crimson.parser.XMLReaderImpl
\ No newline at end of file
+#org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
+ org.xml.sax.driver=org.apache.crimson.parser.XMLReaderImpl
diff --git a/src/org/apache/xalan/templates/ElemTemplateElement.java b/src/org/apache/xalan/templates/ElemTemplateElement.java
index 19cf6a1..adc4e7c 100644
--- a/src/org/apache/xalan/templates/ElemTemplateElement.java
+++ b/src/org/apache/xalan/templates/ElemTemplateElement.java
@@ -302,38 +302,28 @@
   /**
    * Throw a template element runtime error.  (Note: should we throw a TransformerException instead?)
    *
-   * @param msg Description of the error that occured.
+   * @param msg key of the error that occured.
    * @param args Arguments to be used in the message
    */
-  public void error(int msg, Object[] args)
+  public void error(String msg, Object[] args)
   {
 
     String themsg = XSLMessages.createMessage(msg, args);
 
-    error(
-      XSLMessages.createMessage(
-        XSLTErrorResources.ER_ELEMTEMPLATEELEM_ERR, new Object[]{ themsg }));  //"ElemTemplateElement error: "+msg);
+    throw new RuntimeException(XSLMessages.createMessage(
+                                    XSLTErrorResources.ER_ELEMTEMPLATEELEM_ERR,
+                                    new Object[]{ themsg }));
   }
   
-  /**
+  /*
    * Throw an error.
    *
-   * @param msg Message code for the error
-   */
-  public void error(int msg)
-  {
-    error(msg, null);
-  }
-  
-  /**
-   * Throw a template element runtime error.  (Note: should we throw a TransformerException instead?)
+   * @param msg Message key for the error
    *
-   * @param msg Description of the error that occured.
-   * @param args Arguments to be used in the message
    */
   public void error(String msg)
   {
-    throw new RuntimeException(msg);
+    error(msg, null);
   }
   
 
@@ -1217,7 +1207,20 @@
    */
   void executeNSDecls(TransformerImpl transformer) throws TransformerException
   {
+       executeNSDecls(transformer, null);
+  }
 
+  /**
+   * Send startPrefixMapping events to the result tree handler
+   * for all declared prefix mappings in the stylesheet.
+   *
+   * @param transformer non-null reference to the the current transform-time state.
+   * @param ignorePrefix string prefix to not startPrefixMapping
+   *
+   * @throws TransformerException
+   */
+  void executeNSDecls(TransformerImpl transformer, String ignorePrefix) throws TransformerException
+  {  
     try
     {
       if (null != m_prefixTable)
@@ -1229,7 +1232,7 @@
         {
           XMLNSDecl decl = (XMLNSDecl) m_prefixTable.elementAt(i);
 
-          if (!decl.getIsExcluded())
+          if (!decl.getIsExcluded() && !(null != ignorePrefix && decl.getPrefix().equals(ignorePrefix)))
           {
             rhandler.startPrefixMapping(decl.getPrefix(), decl.getURI(), true);
           }
@@ -1243,7 +1246,7 @@
   }
 
   /**
-   * Send startPrefixMapping events to the result tree handler
+   * Send endPrefixMapping events to the result tree handler
    * for all declared prefix mappings in the stylesheet.
    *
    * @param transformer non-null reference to the the current transform-time state.
@@ -1252,7 +1255,21 @@
    */
   void unexecuteNSDecls(TransformerImpl transformer) throws TransformerException
   {
+       unexecuteNSDecls(transformer, null);
+  }
 
+  /**
+   * Send endPrefixMapping events to the result tree handler
+   * for all declared prefix mappings in the stylesheet.
+   *
+   * @param transformer non-null reference to the the current transform-time state.
+   * @param ignorePrefix string prefix to not endPrefixMapping
+   * 
+   * @throws TransformerException
+   */
+  void unexecuteNSDecls(TransformerImpl transformer, String ignorePrefix) throws TransformerException
+  {
+ 
     try
     {
       if (null != m_prefixTable)
@@ -1264,7 +1281,7 @@
         {
           XMLNSDecl decl = (XMLNSDecl) m_prefixTable.elementAt(i);
 
-          if (!decl.getIsExcluded())
+          if (!decl.getIsExcluded() && !(null != ignorePrefix && decl.getPrefix().equals(ignorePrefix)))
           {
             rhandler.endPrefixMapping(decl.getPrefix());
           }
diff --git a/src/org/apache/xalan/templates/FuncDocument.java b/src/org/apache/xalan/templates/FuncDocument.java
index 10b79e4..dee625b 100644
--- a/src/org/apache/xalan/templates/FuncDocument.java
+++ b/src/org/apache/xalan/templates/FuncDocument.java
@@ -421,14 +421,14 @@
    * exception.
    *
    * @param xctxt The XPath runtime state.
-   * @param msg The error message code
+   * @param msg The error message key
    * @param args Arguments to be used in the error message
    * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide
    * the error condition is severe enough to halt processing.
    *
    * @throws javax.xml.transform.TransformerException
    */
-  public void error(XPathContext xctxt, int msg, Object args[])
+  public void error(XPathContext xctxt, String msg, Object args[])
           throws javax.xml.transform.TransformerException
   {
 
@@ -447,14 +447,14 @@
    * Warn the user of a problem.
    *
    * @param xctxt The XPath runtime state.
-   * @param msg Warning message code
+   * @param msg Warning message key
    * @param args Arguments to be used in the warning message
    * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide
    * the error condition is severe enough to halt processing.
    *
    * @throws javax.xml.transform.TransformerException
    */
-  public void warn(XPathContext xctxt, int msg, Object args[])
+  public void warn(XPathContext xctxt, String msg, Object args[])
           throws javax.xml.transform.TransformerException
   {
 
diff --git a/src/org/apache/xalan/templates/FuncFormatNumb.java b/src/org/apache/xalan/templates/FuncFormatNumb.java
index 6b33a4e..70f7299 100644
--- a/src/org/apache/xalan/templates/FuncFormatNumb.java
+++ b/src/org/apache/xalan/templates/FuncFormatNumb.java
@@ -186,14 +186,14 @@
    * Warn the user of a problem.
    *
    * @param xctxt The XPath runtime state.
-   * @param msg Warning message code
+   * @param msg Warning message key
    * @param args Arguments to be used in warning message
    * @throws XSLProcessorException thrown if the active ProblemListener and XPathContext decide
    * the error condition is severe enough to halt processing.
    *
    * @throws javax.xml.transform.TransformerException
    */
-  public void warn(XPathContext xctxt, int msg, Object args[])
+  public void warn(XPathContext xctxt, String msg, Object args[])
           throws javax.xml.transform.TransformerException
   {
 
diff --git a/src/org/apache/xalan/templates/OutputProperties.java b/src/org/apache/xalan/templates/OutputProperties.java
index 9551ba4..a77d0e8 100644
--- a/src/org/apache/xalan/templates/OutputProperties.java
+++ b/src/org/apache/xalan/templates/OutputProperties.java
@@ -66,6 +66,8 @@
 import java.util.Enumeration;
 
 import java.lang.Cloneable;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 
 import org.w3c.dom.Document;
 
@@ -189,7 +191,7 @@
    * @param resourceName non-null reference to resource name.
    * @param defaults Default properties, which may be null.
    */
-  static private Properties loadPropertiesFile(String resourceName, Properties defaults)
+  static private Properties loadPropertiesFile(final String resourceName, Properties defaults)
     throws IOException
   {
 
@@ -204,16 +206,36 @@
 
     try {
       try {
-        java.lang.reflect.Method getCCL = Thread.class.getMethod("getContextClassLoader", NO_CLASSES);
-        if (getCCL != null) {
-          ClassLoader contextClassLoader = (ClassLoader) getCCL.invoke(Thread.currentThread(), NO_OBJS);
-          is = contextClassLoader.getResourceAsStream("org/apache/xalan/templates/" + resourceName);
-        }
+	// Using doPrivileged to be able to read property file without opening
+        // up secured container permissions like J2EE container
+        is =(InputStream)AccessController.doPrivileged( new PrivilegedAction() {
+          public Object run() {
+            try {
+              java.lang.reflect.Method getCCL = Thread.class.getMethod(
+                  "getContextClassLoader", NO_CLASSES);
+              if (getCCL != null) {
+                ClassLoader contextClassLoader = (ClassLoader)
+                    getCCL.invoke(Thread.currentThread(), NO_OBJS);
+                return ( contextClassLoader.getResourceAsStream (
+                    "org/apache/xalan/templates/" + resourceName) );
+              }
+            }
+            catch ( Exception e ) { }
+
+            return null;
+            
+          } 
+        });
       }
       catch (Exception e) {}
 
       if ( is == null ) {
-        is = OutputProperties.class.getResourceAsStream(resourceName);
+        is = (InputStream)AccessController.doPrivileged( new PrivilegedAction(){
+	  public Object run() {
+            return OutputProperties.class.getResourceAsStream(resourceName);
+          }
+        });
+
       }
       
       bis = new BufferedInputStream(is);
diff --git a/src/org/apache/xalan/transformer/MsgMgr.java b/src/org/apache/xalan/transformer/MsgMgr.java
index e4e4bd4..ac5a0dc 100644
--- a/src/org/apache/xalan/transformer/MsgMgr.java
+++ b/src/org/apache/xalan/transformer/MsgMgr.java
@@ -130,7 +130,7 @@
    *
    * @throws TransformerException
    */
-  public void warn(SourceLocator srcLctr, int msg) throws TransformerException
+  public void warn(SourceLocator srcLctr, String msg) throws TransformerException
   {
     warn(srcLctr, null, null, msg, null);
   }
@@ -146,7 +146,7 @@
    *
    * @throws TransformerException
    */
-  public void warn(SourceLocator srcLctr, int msg, Object[] args) throws TransformerException
+  public void warn(SourceLocator srcLctr, String msg, Object[] args) throws TransformerException
   {
     warn(srcLctr, null, null, msg, args);
   }
@@ -164,7 +164,7 @@
    *
    * @throws TransformerException
    */
-  public void warn(SourceLocator srcLctr, Node styleNode, Node sourceNode, int msg)
+  public void warn(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg)
           throws TransformerException
   {
     warn(srcLctr, styleNode, sourceNode, msg, null);
@@ -183,7 +183,7 @@
    *
    * @throws TransformerException
    */
-  public void warn(SourceLocator srcLctr, Node styleNode, Node sourceNode, int msg, Object args[])
+  public void warn(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg, Object args[])
           throws TransformerException
   {
 
@@ -196,7 +196,7 @@
       System.out.println(formattedMsg);
   }
 
-  /**
+  /* This method is not properly i18nized. We need to use the following method
    * <meta name="usage" content="internal"/>
    * Tell the user of an error, and probably throw an
    * exception.
@@ -206,7 +206,7 @@
    * the error condition is severe enough to halt processing.
    *
    * @throws TransformerException
-   */
+   *
   public void error(SourceLocator srcLctr, String msg) throws TransformerException
   {
 
@@ -222,6 +222,8 @@
       throw new TransformerException(msg, srcLctr);
   }
 
+ */
+
   /**
    * <meta name="usage" content="internal"/>
    * Tell the user of an error, and probably throw an
@@ -233,7 +235,7 @@
    *
    * @throws TransformerException
    */
-  public void error(SourceLocator srcLctr, int msg) throws TransformerException
+  public void error(SourceLocator srcLctr, String msg) throws TransformerException
   {
     error(srcLctr, null, null, msg, null);
   }
@@ -250,7 +252,7 @@
    *
    * @throws TransformerException
    */
-  public void error(SourceLocator srcLctr, int msg, Object[] args) throws TransformerException
+  public void error(SourceLocator srcLctr, String msg, Object[] args) throws TransformerException
   {
     error(srcLctr, null, null, msg, args);
   }
@@ -267,7 +269,7 @@
    *
    * @throws TransformerException
    */
-  public void error(SourceLocator srcLctr, int msg, Exception e) throws TransformerException
+  public void error(SourceLocator srcLctr, String msg, Exception e) throws TransformerException
   {
     error(srcLctr, msg, null, e);
   }
@@ -285,7 +287,7 @@
    *
    * @throws TransformerException
    */
-  public void error(SourceLocator srcLctr, int msg, Object args[], Exception e) throws TransformerException
+  public void error(SourceLocator srcLctr, String msg, Object args[], Exception e) throws TransformerException
   {
 
     //msg  = (null == msg) ? XSLTErrorResources.ER_PROCESSOR_ERROR : msg;
@@ -316,7 +318,7 @@
    *
    * @throws TransformerException
    */
-  public void error(SourceLocator srcLctr, Node styleNode, Node sourceNode, int msg)
+  public void error(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg)
           throws TransformerException
   {
     error(srcLctr, styleNode, sourceNode, msg, null);
@@ -336,7 +338,7 @@
    *
    * @throws TransformerException
    */
-  public void error(SourceLocator srcLctr, Node styleNode, Node sourceNode, int msg, Object args[])
+  public void error(SourceLocator srcLctr, Node styleNode, Node sourceNode, String msg, Object args[])
           throws TransformerException
   {
 
diff --git a/src/org/apache/xalan/xslt/Process.java b/src/org/apache/xalan/xslt/Process.java
index 4a24edd..80d2587 100644
--- a/src/org/apache/xalan/xslt/Process.java
+++ b/src/org/apache/xalan/xslt/Process.java
@@ -2,7 +2,7 @@
  * The Apache Software License, Version 1.1
  *
  *
- * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * Copyright (c) 1999-2003 The Apache Software Foundation.  All rights 
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -66,10 +66,6 @@
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.FactoryConfigurationError;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Source;
 import javax.xml.transform.Templates;
@@ -86,27 +82,21 @@
 import javax.xml.transform.sax.TransformerHandler;
 import javax.xml.transform.stream.StreamResult;
 import javax.xml.transform.stream.StreamSource;
-import org.apache.xalan.processor.TransformerFactoryImpl;
+
 import org.apache.xalan.processor.XSLProcessorVersion;
 import org.apache.xalan.res.XSLMessages;
 import org.apache.xalan.res.XSLTErrorResources;
 import org.apache.xalan.trace.PrintTraceListener;
 import org.apache.xalan.trace.TraceManager;
-import org.apache.xalan.transformer.TransformerImpl;
 import org.apache.xalan.transformer.XalanProperties;
 import org.apache.xml.utils.DefaultErrorHandler;
-import org.apache.xml.utils.WrappedRuntimeException;
-import org.apache.xml.utils.res.XResourceBundle;
+
 import org.w3c.dom.Document;
-import org.w3c.dom.DocumentFragment;
 import org.w3c.dom.Node;
+
 import org.xml.sax.ContentHandler;
 import org.xml.sax.EntityResolver;
-import org.xml.sax.ErrorHandler;
 import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXNotRecognizedException;
-import org.xml.sax.SAXNotSupportedException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.XMLReaderFactory;
 
@@ -473,7 +463,7 @@
             try
             {
               uriResolver =
-                (URIResolver) Class.forName(argv[++i]).newInstance();
+                (URIResolver) Class.forName(argv[++i],true,ClassLoader.getSystemClassLoader()).newInstance();
 
               tfactory.setURIResolver(uriResolver);
             }
@@ -502,7 +492,7 @@
             try
             {
               entityResolver =
-                (EntityResolver) Class.forName(argv[++i]).newInstance();
+                (EntityResolver) Class.forName(argv[++i],true,ClassLoader.getSystemClassLoader()).newInstance();
             }
             catch (Exception cnfe)
             {
@@ -529,7 +519,7 @@
             try
             {
               contentHandler =
-                (ContentHandler) Class.forName(argv[++i]).newInstance();
+                (ContentHandler) Class.forName(argv[++i],true,ClassLoader.getSystemClassLoader()).newInstance();
             }
             catch (Exception cnfe)
             {
@@ -966,12 +956,6 @@
                                   true);
               } catch (org.xml.sax.SAXException se) {}
         
-              try
-              {
-                reader.setFeature("http://apache.org/xml/features/validation/dynamic",
-                                  true);
-              } catch (org.xml.sax.SAXException se) {}
-              
               th.setResult(strResult);
               
               reader.parse(new InputSource(inFileName));
diff --git a/src/org/apache/xalan/xsltc/compiler/Parser.java b/src/org/apache/xalan/xsltc/compiler/Parser.java
index 4ffbcf3..ed9eda9 100644
--- a/src/org/apache/xalan/xsltc/compiler/Parser.java
+++ b/src/org/apache/xalan/xsltc/compiler/Parser.java
@@ -109,16 +109,16 @@
     private Hashtable   _variableScope;
     private Stylesheet  _currentStylesheet;
     private SymbolTable _symbolTable; // Maps QNames to syntax-tree nodes
-    private Output      _output = null;
+    private Output      _output;
     private Template    _template;    // Reference to the template being parsed.
 
-    private boolean     _rootNamespaceDef = false; // Used for validity check
+    private boolean     _rootNamespaceDef; // Used for validity check
 
-    private SyntaxTreeNode _root = null;
+    private SyntaxTreeNode _root;
 
     private String _target;
 
-    private int _currentImportPrecedence = 1;
+    private int _currentImportPrecedence;
 
     public Parser(XSLTC xsltc) {
 	_xsltc = xsltc;
@@ -136,6 +136,9 @@
 	_symbolTable         = new SymbolTable();
 	_xpathParser         = new XPathParser(this);
 	_currentStylesheet   = null;
+        _output              = null;
+        _root                = null;
+        _rootNamespaceDef    = false;
 	_currentImportPrecedence = 1;
 	
 	initStdClasses();
diff --git a/src/org/apache/xalan/xsltc/compiler/XSLTC.java b/src/org/apache/xalan/xsltc/compiler/XSLTC.java
index 8f08186..33ccd3d 100644
--- a/src/org/apache/xalan/xsltc/compiler/XSLTC.java
+++ b/src/org/apache/xalan/xsltc/compiler/XSLTC.java
@@ -100,9 +100,9 @@
 
     // A reference to an external SourceLoader (for use with include/import)
     private SourceLoader _loader = null;
-    
+
     // A reference to the stylesheet being compiled.
-    private Stylesheet _stylesheet = null;
+    private Stylesheet _stylesheet;
 
     // Counters used by various classes to generate unique names.
     // private int _variableSerial     = 1;
@@ -111,9 +111,9 @@
     private int _stepPatternSerial  = 1;
     private int _helperClassSerial  = 0;
     private int _attributeSetSerial = 0;
-    
+
     private int[] _numberFieldIndexes;
-    
+
     // Name index tables
     private int       _nextGType;  // Next available element type
     private Vector    _namesIndex; // Index of all registered QNames
@@ -132,7 +132,7 @@
     public static final int CLASSLOADER_OUTPUT = 3;
     public static final int BYTEARRAY_AND_FILE_OUTPUT = 4;
     public static final int BYTEARRAY_AND_JAR_OUTPUT  = 5;
-    
+
 
     // Compiler options (passed from command line or XSLTC client)
     private boolean _debug = false;      // -x
@@ -165,8 +165,8 @@
     /**
      * Only for user by the internal TrAX implementation.
      */
-    public void setParser(Parser parser) {
-	_parser = parser;
+    public Parser getParser() {
+        return _parser;
     }
 
     /**
@@ -192,7 +192,7 @@
 	_classes = new Vector();
 	_bcelClasses = new Vector();
     }
-    
+
     /**
      * Initializes the compiler to produce a new translet
      */
@@ -204,6 +204,7 @@
 	_namespaces.put("",new Integer(_nextNSType));
 	_namesIndex     = new Vector(128);
 	_namespaceIndex = new Vector(32);
+        _stylesheet = null;
 	_parser.init();
 	//_variableSerial     = 1;
 	_modeSerial         = 1;
@@ -223,7 +224,7 @@
      * Defines an external SourceLoader to provide the compiler with documents
      * referenced in xsl:include/import
      * @param loader The SourceLoader to use for include/import
-     */    
+     */
     public void setSourceLoader(SourceLoader loader) {
 	_loader = loader;
     }
@@ -250,7 +251,7 @@
     public void setPIParameters(String media, String title, String charset) {
 	_parser.setPIParameters(media, title, charset);
     }
-    
+
     /**
      * Compiles an XSL stylesheet pointed to by a URL
      * @param url An URL containing the input XSL stylesheet
@@ -312,7 +313,7 @@
 	    reset();
 
 	    // The systemId may not be set, so we'll have to check the URL
-	    String systemId = null; 
+	    String systemId = null;
 	    if (input != null) {
 	        systemId = input.getSystemId();
 	    }
@@ -382,7 +383,7 @@
     public boolean compile(Vector stylesheets) {
 	// Get the number of stylesheets (ie. URLs) in the vector
 	final int count = stylesheets.size();
-	
+
 	// Return straight away if the vector is empty
 	if (count == 0) return true;
 
@@ -399,7 +400,7 @@
 	    // Traverse all elements in the vector and compile
 	    final Enumeration urls = stylesheets.elements();
 	    while (urls.hasMoreElements()) {
-		_className = null; // reset, so that new name will be computed 
+		_className = null; // reset, so that new name will be computed
 		final Object url = urls.nextElement();
 		if (url instanceof URL) {
 		    if (!compile((URL)url)) return false;
@@ -436,7 +437,7 @@
 	else
 	    return null;
     }
-    
+
     /**
      * Compiles a stylesheet pointed to by a URL. The result is put in a
      * set of byte arrays. One byte array for each generated class.
@@ -446,7 +447,7 @@
      */
     public byte[][] compile(String name, InputSource input) {
         return compile(name, input, BYTEARRAY_OUTPUT);
-    }    
+    }
 
     /**
      * Set the XMLReader to use for parsing the next input stylesheet
@@ -519,7 +520,7 @@
      */
     public void setClassName(String className) {
 	final String base  = Util.baseName(className);
-	final String noext = Util.noExtName(base); 
+	final String noext = Util.noExtName(base);
 	String name  = Util.toJavaName(noext);
 
 	if (_packageName == null)
@@ -527,7 +528,7 @@
 	else
 	    _className = _packageName + '.' + name;
     }
-    
+
     /**
      * Get the class name for the generated translet.
      */
@@ -542,7 +543,7 @@
     private String classFileName(final String className) {
 	return className.replace('.', File.separatorChar) + ".class";
     }
-    
+
     /**
      * Generate an output File object to send the translet to
      */
@@ -607,7 +608,7 @@
     public Stylesheet getStylesheet() {
 	return _stylesheet;
     }
-   
+
     /**
      * Registers an attribute and gives it a type so that it can be mapped to
      * DOM attribute types at run-time.
@@ -655,7 +656,7 @@
 	final SymbolTable stable = _parser.getSymbolTable();
 	final String uri = stable.lookupNamespace(name.toString());
 	final int code = registerNamespace(uri);
-	return code; 
+	return code;
     }
 
     /**
@@ -671,7 +672,7 @@
 	}
 	return code.intValue();
     }
-    
+
     public int nextModeSerial() {
 	return _modeSerial++;
     }
@@ -691,7 +692,7 @@
     public int nextHelperClassSerial() {
 	return _helperClassSerial++;
     }
-    
+
     public int nextAttributeSetSerial() {
 	return _attributeSetSerial++;
     }
@@ -703,7 +704,7 @@
     public Vector getNamespaceIndex() {
 	return _namespaceIndex;
     }
-    
+
     /**
      * Returns a unique name for every helper class needed to
      * execute a translet.
@@ -711,11 +712,11 @@
     public String getHelperClassName() {
 	return getClassName() + '$' + _helperClassSerial++;
     }
-   
+
     public void dumpClass(JavaClass clazz) {
-	
-	if (_outputType == FILE_OUTPUT || 
-	    _outputType == BYTEARRAY_AND_FILE_OUTPUT) 
+
+	if (_outputType == FILE_OUTPUT ||
+	    _outputType == BYTEARRAY_AND_FILE_OUTPUT)
 	{
 	    File outFile = getOutputFile(clazz.getClassName());
 	    String parentDir = outFile.getParent();
@@ -725,7 +726,7 @@
 	            parentFile.mkdirs();
 	    }
 	}
-	
+
 	try {
 	    switch (_outputType) {
 	    case FILE_OUTPUT:
@@ -735,7 +736,7 @@
 			    getOutputFile(clazz.getClassName()))));
 		break;
 	    case JAR_OUTPUT:
-		_bcelClasses.addElement(clazz);	 
+		_bcelClasses.addElement(clazz);
 		break;
 	    case BYTEARRAY_OUTPUT:
 	    case BYTEARRAY_AND_FILE_OUTPUT:
@@ -744,13 +745,13 @@
 		ByteArrayOutputStream out = new ByteArrayOutputStream(2048);
 		clazz.dump(out);
 		_classes.addElement(out.toByteArray());
-		
+
 		if (_outputType == BYTEARRAY_AND_FILE_OUTPUT)
 		  clazz.dump(new BufferedOutputStream(
 			new FileOutputStream(getOutputFile(clazz.getClassName()))));
 		else if (_outputType == BYTEARRAY_AND_JAR_OUTPUT)
 		  _bcelClasses.addElement(clazz);
-		  
+
 		break;
 	    }
 	}
@@ -765,7 +766,7 @@
     private String entryName(File f) throws IOException {
 	return f.getName().replace(File.separatorChar, '/');
     }
-    
+
     /**
      * Generate output JAR-file and packages
      */
@@ -779,7 +780,7 @@
 	// create manifest
 	Enumeration classes = _bcelClasses.elements();
 	final String now = (new Date()).toString();
-	final java.util.jar.Attributes.Name dateAttr = 
+	final java.util.jar.Attributes.Name dateAttr =
 	    new java.util.jar.Attributes.Name("Date");
 	while (classes.hasMoreElements()) {
 	    final JavaClass clazz = (JavaClass)classes.nextElement();
diff --git a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
index c9058c4..82c7a0a 100644
--- a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
@@ -4,7 +4,7 @@
  * The Apache Software License, Version 1.1
  *
  *
- * Copyright (c) 2001 The Apache Software Foundation.  All rights
+ * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  * reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -63,21 +63,30 @@
 
 package org.apache.xalan.xsltc.trax;
 
-import javax.xml.transform.*;
-import javax.xml.transform.sax.*;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.sax.TemplatesHandler;
 
-import org.xml.sax.Locator;
+import org.apache.xalan.xsltc.compiler.CompilerException;
+import org.apache.xalan.xsltc.compiler.Parser;
+import org.apache.xalan.xsltc.compiler.SourceLoader;
+import org.apache.xalan.xsltc.compiler.Stylesheet;
+import org.apache.xalan.xsltc.compiler.SyntaxTreeNode;
+import org.apache.xalan.xsltc.compiler.XSLTC;
+
+import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
-
-import org.apache.xalan.xsltc.compiler.*;
-import org.apache.xalan.xsltc.Translet;
-import org.apache.xalan.xsltc.runtime.AbstractTranslet;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.Attributes;
 
 /**
  * Implementation of a JAXP1.1 TemplatesHandler
  */
-public class TemplatesHandlerImpl extends Parser 
-    implements TemplatesHandler, SourceLoader 
+public class TemplatesHandlerImpl
+    implements ContentHandler, TemplatesHandler, SourceLoader
 {
     /**
      * System ID for this stylesheet.
@@ -101,27 +110,21 @@
     private TransformerFactoryImpl _tfactory = null;
 
     /**
-     * Default constructor
+     * A reference to XSLTC's parser object.
      */
-    protected TemplatesHandlerImpl(int indentNumber, 
-	TransformerFactoryImpl tfactory) 
-    {
-	super(null);
-	_indentNumber = indentNumber;
-	_tfactory = tfactory;
-    }
+    private Parser _parser = null;
 
     /**
-     * Internal initialization
+     * Default constructor
      */
-    public void init() {
-	// Create and initialize a stylesheet compiler
-	final XSLTC xsltc = new XSLTC();
-	super.setXSLTC(xsltc);
-	xsltc.init();
-	super.init();
-	xsltc.setParser(this);
-	xsltc.setOutputType(XSLTC.BYTEARRAY_OUTPUT);
+    protected TemplatesHandlerImpl(int indentNumber,
+	TransformerFactoryImpl tfactory)
+    {
+	_indentNumber = indentNumber;
+	_tfactory = tfactory;
+
+       // Instantiate XSLTC and get reference to parser object
+       _parser = new XSLTC().getParser();
     }
 
     /**
@@ -162,7 +165,7 @@
      */
     public Templates getTemplates() {
 	try {
-	    final XSLTC xsltc = getXSLTC();
+	    XSLTC xsltc = _parser.getXSLTC();
 
 	    // Set a document loader (for xsl:include/import) if defined
 	    if (_uriResolver != null) {
@@ -183,36 +186,40 @@
 	    transletName = xsltc.getClassName();
 
 	    Stylesheet stylesheet = null;
-	    SyntaxTreeNode root = getDocumentRoot();
+	    SyntaxTreeNode root = _parser.getDocumentRoot();
 
 	    // Compile the translet - this is where the work is done!
-	    if (!errorsFound() && root != null) {
+	    if (!_parser.errorsFound() && root != null) {
 		// Create a Stylesheet element from the root node
-		stylesheet = makeStylesheet(root);
+		stylesheet = _parser.makeStylesheet(root);
 		stylesheet.setSystemId(_systemId);
 		stylesheet.setParentStylesheet(null);
-		setCurrentStylesheet(stylesheet);
+		_parser.setCurrentStylesheet(stylesheet);
 
 		// Set it as top-level in the XSLTC object
 		xsltc.setStylesheet(stylesheet);
 
-		// Create AST under the Stylesheet element 
-		createAST(stylesheet);
+		// Create AST under the Stylesheet element
+		_parser.createAST(stylesheet);
 	    }
 
 	    // Generate the bytecodes and output the translet class(es)
-	    if (!errorsFound() && stylesheet != null) {
+	    if (!_parser.errorsFound() && stylesheet != null) {
 		stylesheet.setMultiDocument(xsltc.isMultiDocument());
-		stylesheet.translate();
+
+                // Class synchronization is needed for BCEL
+                synchronized (xsltc.getClass()) {
+                    stylesheet.translate();
+                }
 	    }
 
-	    if (!errorsFound()) {
+	    if (!_parser.errorsFound()) {
 		// Check that the transformation went well before returning
 		final byte[][] bytecodes = xsltc.getBytecodes();
 		if (bytecodes != null) {
-		    final TemplatesImpl templates = 
-			new TemplatesImpl(xsltc.getBytecodes(), transletName, 
-			    getOutputProperties(), _indentNumber, _tfactory);
+		    final TemplatesImpl templates =
+			new TemplatesImpl(xsltc.getBytecodes(), transletName,
+			    _parser.getOutputProperties(), _indentNumber, _tfactory);
 
 		    // Set URIResolver on templates object
 		    if (_uriResolver != null) {
@@ -229,16 +236,6 @@
     }
 
     /**
-     * Recieve an object for locating the origin of SAX document events.
-     * Most SAX parsers will use this method to inform content handler
-     * of the location of the parsed document. 
-     */
-    public void setDocumentLocator(Locator locator) {
-	super.setDocumentLocator(locator);
-  	setSystemId(locator.getSystemId());
-    }
-
-    /**
      * This method implements XSLTC's SourceLoader interface. It is used to
      * glue a TrAX URIResolver to the XSLTC compiler's Input and Import classes.
      *
@@ -260,6 +257,91 @@
 	}
 	return null;
     }
+
+    // -- ContentHandler --------------------------------------------------
+
+    /**
+     * Re-initialize parser and forward SAX2 event.
+     */
+    public void startDocument() {
+        XSLTC xsltc = _parser.getXSLTC();
+        xsltc.init();   // calls _parser.init()
+        xsltc.setOutputType(XSLTC.BYTEARRAY_OUTPUT);
+        _parser.startDocument();
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void endDocument() {
+        _parser.endDocument();
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void startPrefixMapping(String prefix, String uri) {
+        _parser.startPrefixMapping(prefix, uri);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void endPrefixMapping(String prefix) {
+        _parser.endPrefixMapping(prefix);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void startElement(String uri, String localname, String qname,
+        Attributes attributes) throws SAXException
+    {
+        _parser.startElement(uri, localname, qname, attributes);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void endElement(String uri, String localname, String qname) {
+        _parser.endElement(uri, localname, qname);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void characters(char[] ch, int start, int length) {
+        _parser.characters(ch, start, length);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void processingInstruction(String name, String value) {
+        _parser.processingInstruction(name, value);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void ignorableWhitespace(char[] ch, int start, int length) {
+        _parser.ignorableWhitespace(ch, start, length);
+    }
+
+    /**
+     * Just forward SAX2 event to parser object.
+     */
+    public void skippedEntity(String name) {
+        _parser.skippedEntity(name);
+    }
+
+    /**
+     * Set internal system Id and forward SAX2 event to parser object.
+     */
+    public void setDocumentLocator(Locator locator) {
+        setSystemId(locator.getSystemId());
+        _parser.setDocumentLocator(locator);
+    }
 }
 
 
diff --git a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
index 077b183..eb54d82 100644
--- a/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
+++ b/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
@@ -679,7 +679,6 @@
     { 
 	final TemplatesHandlerImpl handler = 
 	    new TemplatesHandlerImpl(_indentNumber, this);
-	handler.init();
 	if (_uriResolver != null) {
 	    handler.setURIResolver(_uriResolver);
 	}
diff --git a/src/org/apache/xml/dtm/ref/DTMManagerDefault.java b/src/org/apache/xml/dtm/ref/DTMManagerDefault.java
index 2d76162..996be27 100644
--- a/src/org/apache/xml/dtm/ref/DTMManagerDefault.java
+++ b/src/org/apache/xml/dtm/ref/DTMManagerDefault.java
@@ -391,7 +391,9 @@
           {
             // IncrementalSAXSource_Xerces to avoid threading.
             try {
-              coParser=org.apache.xml.dtm.ref.IncrementalSAXSource_Xerces.createIncrementalSAXSource();
+            // Removing Xerces compile time dependency 
+            //  coParser=org.apache.xml.dtm.ref.IncrementalSAXSource_Xerces.createIncrementalSAXSource();
+             coParser =(IncrementalSAXSource)Class.forName("org.apache.xml.dtm.ref.IncrementalSAXSource_Xerces").newInstance();
             }  catch( Exception ex ) {
               ex.printStackTrace();
               coParser=null;
diff --git a/src/org/apache/xml/utils/DOMBuilder.java b/src/org/apache/xml/utils/DOMBuilder.java
index 7db63ad..e280f1a 100644
--- a/src/org/apache/xml/utils/DOMBuilder.java
+++ b/src/org/apache/xml/utils/DOMBuilder.java
@@ -325,15 +325,15 @@
   
           String attrNS = atts.getURI(i);
           
-          if("".equals(attrNS))
-            attrNS = null; // DOM represents no-namespace as null
-  
-          // System.out.println("attrNS: "+attrNS+", localName: "+atts.getQName(i)
-          //                   +", qname: "+atts.getQName(i)+", value: "+atts.getValue(i));
-          // Crimson won't let us set an xmlns: attribute on the DOM.
           String attrQName = atts.getQName(i);
-          // ALWAYS use the DOM Level 2 call!
-          elem.setAttributeNS(attrNS,attrQName, atts.getValue(i));
+          if((attrQName.equals("xmlns") || attrQName.startsWith("xmlns:")) )
+          {
+            elem.setAttributeNS("http://www.w3.org/2000/xmlns/",attrQName, atts.getValue(i));
+          }
+          else
+          {
+             elem.setAttributeNS(atts.getURI(i),attrQName, atts.getValue(i));
+          }
         }
       }
       
@@ -423,11 +423,18 @@
 
       return;
     }
-
+    
     String s = new String(ch, start, length);
-    Text text = m_doc.createTextNode(s);
+    Node childNode = m_currentNode.getLastChild();
 
-    append(text);
+    if( childNode != null && childNode.getNodeType() == Node.TEXT_NODE ){
+      ((Text)childNode).appendData(s);
+    }
+    else
+    {
+      Text text = m_doc.createTextNode(s);
+      append(text);
+    }
   }
 
   /**
@@ -585,6 +592,7 @@
   public void startCDATA() throws org.xml.sax.SAXException
   {
     m_inCData = true;
+    append(m_doc.createCDATASection(""));
   }
 
   /**
@@ -627,8 +635,9 @@
       return;  // avoid DOM006 Hierarchy request error
 
     String s = new String(ch, start, length);
-
-    append(m_doc.createCDATASection(s));
+    
+    CDATASection section  =(CDATASection) m_currentNode.getLastChild();
+    section.appendData(s);
   }
 
   /**
diff --git a/src/org/apache/xml/utils/UnImplNode.java b/src/org/apache/xml/utils/UnImplNode.java
index d188d6e..73af841 100644
--- a/src/org/apache/xml/utils/UnImplNode.java
+++ b/src/org/apache/xml/utils/UnImplNode.java
@@ -77,9 +77,9 @@
   /**
    * Throw an error.
    *
-   * @param msg Message code for the error
+   * @param msg Message Key for the error
    */
-  public void error(int msg)
+  public void error(String msg)
   {
 
     System.out.println("DOM ERROR! class: " + this.getClass().getName());
@@ -90,10 +90,10 @@
   /**
    * Throw an error.
    *
-   * @param msg Message code for the error
+   * @param msg Message Key for the error
    * @param args Array of arguments to be used in the error message
    */
-  public void error(int msg, Object[] args)
+  public void error(String msg, Object[] args)
   {
 
     System.out.println("DOM ERROR! class: " + this.getClass().getName());
diff --git a/src/org/apache/xml/utils/res/XResourceBundleBase.java b/src/org/apache/xml/utils/res/XResourceBundleBase.java
new file mode 100644
index 0000000..bad46c6
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResourceBundleBase.java
@@ -0,0 +1,86 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999, Lotus
+ * Development Corporation., http://www.lotus.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import java.util.ListResourceBundle;
+
+/**
+ * <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 XResourceBundleBase extends ListResourceBundle
+{
+
+  /**
+   * Get the error string associated with the error code
+   *
+   * @param errorCode Error code
+   *
+   * @return error string associated with the given error code
+   */
+  abstract public String getMessageKey(int errorCode);
+
+  /**
+   * Get the warning string associated with the error code
+   *
+   * @param errorCode Error code
+   * 
+   * @return warning string associated with the given error code
+   */
+  abstract public String getWarningKey(int errorCode);
+}
diff --git a/src/org/apache/xml/utils/res/XResources_de.java b/src/org/apache/xml/utils/res/XResources_de.java
new file mode 100644
index 0000000..8dec10b
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResources_de.java
@@ -0,0 +1,117 @@
+/*
+ * @(#)XResources_de.java	1.4 01/12/03
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import org.apache.xml.utils.res.XResourceBundle;
+
+import java.util.*;
+
+//
+//  LangResources_de.properties
+//
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The German resource bundle.
+ */
+public class XResources_de extends XResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.         */
+  static final Object[][] contents =
+  {
+    { "ui_language", "de" }, { "help_language", "de" }, { "language", "de" },
+    { "alphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+    { "tradAlphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+
+    //language orientation
+    { "orientation", "LeftToRight" },
+
+    //language numbering   
+    { "numbering", "additive" },
+
+    // largest numerical value
+    //{"MaxNumericalValue", new Integer()},
+    //These would not be used for EN. Only used for traditional numbering   
+    //{"numberGroups", new int[]{10,1}},
+    //These only used for mutiplicative-additive numbering
+    //{"multiplier", "10"},
+    //{"multiplierChar", "M"}, 
+    //{"digits", new char[]{'a','b','c','d','e','f','g','h','i'}},
+    //{"digits", new char[]{0x10D0,0x10D1,0x10D2,0x10D3,0x10D4,0x10D5,0x10D6,0x10D7,0x10D8}},
+    //{"tens", new char[]{0x10D9,0x10DA,0x10DB,0x10DC,0x10DD,0x10DE,0x10DF,0x10E0,0x10E1}},  
+    //hundreds, etc...
+    //{"tables", new String[]{"tens", "digits"}}
+  };
+}
diff --git a/src/org/apache/xml/utils/res/XResources_es.java b/src/org/apache/xml/utils/res/XResources_es.java
new file mode 100644
index 0000000..68b9e7b
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResources_es.java
@@ -0,0 +1,117 @@
+/*
+ * @(#)XResources_es.java	1.4 01/12/03
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import org.apache.xml.utils.res.XResourceBundle;
+
+import java.util.*;
+
+//
+//  LangResources_es.properties
+//
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The Spanish resource bundle.
+ */
+public class XResources_es extends XResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.         */
+  static final Object[][] contents =
+  {
+    { "ui_language", "es" }, { "help_language", "es" }, { "language", "es" },
+    { "alphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+    { "tradAlphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+
+    //language orientation
+    { "orientation", "LeftToRight" },
+
+    //language numbering   
+    { "numbering", "additive" },
+
+    // largest numerical value
+    //{"MaxNumericalValue", new Integer()},
+    //These would not be used for EN. Only used for traditional numbering   
+    //{"numberGroups", new int[]{10,1}},
+    //These only used for mutiplicative-additive numbering
+    //{"multiplier", "10"},
+    //{"multiplierChar", "M"}, 
+    //{"digits", new char[]{'a','b','c','d','e','f','g','h','i'}},
+    //{"digits", new char[]{0x10D0,0x10D1,0x10D2,0x10D3,0x10D4,0x10D5,0x10D6,0x10D7,0x10D8}},
+    //{"tens", new char[]{0x10D9,0x10DA,0x10DB,0x10DC,0x10DD,0x10DE,0x10DF,0x10E0,0x10E1}},  
+    //hundreds, etc...
+    //{"tables", new String[]{"tens", "digits"}}
+  };
+}
diff --git a/src/org/apache/xml/utils/res/XResources_fr.java b/src/org/apache/xml/utils/res/XResources_fr.java
new file mode 100644
index 0000000..43118e0
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResources_fr.java
@@ -0,0 +1,117 @@
+/*
+ * @(#)XResources_fr.java	1.4 01/12/03
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import org.apache.xml.utils.res.XResourceBundle;
+
+import java.util.*;
+
+//
+//  LangResources_fr.properties
+//
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The French resource bundle.
+ */
+public class XResources_fr extends XResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.         */
+  static final Object[][] contents =
+  {
+    { "ui_language", "fr" }, { "help_language", "fr" }, { "language", "fr" },
+    { "alphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+    { "tradAlphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+
+    //language orientation
+    { "orientation", "LeftToRight" },
+
+    //language numbering   
+    { "numbering", "additive" },
+
+    // largest numerical value
+    //{"MaxNumericalValue", new Integer()},
+    //These would not be used for EN. Only used for traditional numbering   
+    //{"numberGroups", new int[]{10,1}},
+    //These only used for mutiplicative-additive numbering
+    //{"multiplier", "10"},
+    //{"multiplierChar", "M"}, 
+    //{"digits", new char[]{'a','b','c','d','e','f','g','h','i'}},
+    //{"digits", new char[]{0x10D0,0x10D1,0x10D2,0x10D3,0x10D4,0x10D5,0x10D6,0x10D7,0x10D8}},
+    //{"tens", new char[]{0x10D9,0x10DA,0x10DB,0x10DC,0x10DD,0x10DE,0x10DF,0x10E0,0x10E1}},  
+    //hundreds, etc...
+    //{"tables", new String[]{"tens", "digits"}}
+  };
+}
diff --git a/src/org/apache/xml/utils/res/XResources_it.java b/src/org/apache/xml/utils/res/XResources_it.java
new file mode 100644
index 0000000..eac02e9
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResources_it.java
@@ -0,0 +1,117 @@
+/*
+ * @(#)XResources_it.java	1.4 01/12/03
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import org.apache.xml.utils.res.XResourceBundle;
+
+import java.util.*;
+
+//
+//  LangResources_it.properties
+//
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The Italian resource bundle.
+ */
+public class XResources_it extends XResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.         */
+  static final Object[][] contents =
+  {
+    { "ui_language", "it" }, { "help_language", "it" }, { "language", "it" },
+    { "alphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+    { "tradAlphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+
+    //language orientation
+    { "orientation", "LeftToRight" },
+
+    //language numbering   
+    { "numbering", "additive" },
+
+    // largest numerical value
+    //{"MaxNumericalValue", new Integer()},
+    //These would not be used for EN. Only used for traditional numbering   
+    //{"numberGroups", new int[]{10,1}},
+    //These only used for mutiplicative-additive numbering
+    //{"multiplier", "10"},
+    //{"multiplierChar", "M"}, 
+    //{"digits", new char[]{'a','b','c','d','e','f','g','h','i'}},
+    //{"digits", new char[]{0x10D0,0x10D1,0x10D2,0x10D3,0x10D4,0x10D5,0x10D6,0x10D7,0x10D8}},
+    //{"tens", new char[]{0x10D9,0x10DA,0x10DB,0x10DC,0x10DD,0x10DE,0x10DF,0x10E0,0x10E1}},  
+    //hundreds, etc...
+    //{"tables", new String[]{"tens", "digits"}}
+  };
+}
diff --git a/src/org/apache/xml/utils/res/XResources_ko.java b/src/org/apache/xml/utils/res/XResources_ko.java
new file mode 100644
index 0000000..d78a63e
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResources_ko.java
@@ -0,0 +1,121 @@
+/*
+ * @(#)XResources_ko.java	1.3 01/12/03
+ *
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import org.apache.xml.utils.res.XResourceBundle;
+
+import java.util.*;
+
+//
+//  LangResources_ko.properties
+//
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The Korean resource bundle.
+ */
+public class XResources_ko extends XResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.          */
+  static final Object[][] contents =
+  {
+    { "ui_language", "ko" }, { "help_language", "ko" }, { "language", "ko" },
+    { "alphabet",
+      new char[]{ 0x3131, 0x3134, 0x3137, 0x3139, 0x3141, 0x3142, 0x3145, 0x3147, 0x3148, 0x314a, 0x314b, 0x314c,
+                  0x314d, 0x314e, 0x314f, 0x3151, 0x3153, 0x3155, 0x3157, 0x315b, 0x315c, 0x3160, 0x3161, 0x3163}},
+    { "tradAlphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+
+    //language orientation 
+    { "orientation", "LeftToRight" },
+
+    //language numbering   
+    { "numbering", "multiplicative-additive" },
+    { "multiplierOrder", "follows" },
+
+    // largest numerical value
+    //{"MaxNumericalValue", new Integer(100000000)},
+    //These would not be used for EN. Only used for traditional numbering   
+    { "numberGroups", new int[]{ 1 } },
+
+    // chinese only ??
+    { "zero", new char[0] },
+
+    //These only used for mutiplicative-additive numbering
+    { "multiplier", new int[]{ 100000000, 10000, 1000, 100, 10 } },
+    { "multiplierChar",
+      new char[]{  0xc5b5, 0xb9cc, 0xcc9c, 0xbc31, 0xc2ed } },
+    { "digits",
+      new char[]{ 0xc77c, 0xc774, 0xc0bc, 0xc0ac, 0xc624, 0xc721, 0xce60, 0xd314, 0xad6c
+                   } }, { "tables", new String[]{ "digits" } }
+  };
+}
diff --git a/src/org/apache/xml/utils/res/XResources_sv.java b/src/org/apache/xml/utils/res/XResources_sv.java
new file mode 100644
index 0000000..2f0fd38
--- /dev/null
+++ b/src/org/apache/xml/utils/res/XResources_sv.java
@@ -0,0 +1,118 @@
+/*
+ * @(#)XResources_sv.java	1.4 01/12/03
+ *
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xml.utils.res;
+
+import org.apache.xml.utils.res.XResourceBundle;
+
+import java.util.*;
+
+//
+//  LangResources_sv.properties
+//
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The Swedish resource bundle.
+ */
+public class XResources_sv extends XResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.         */
+  static final Object[][] contents =
+  {
+    { "ui_language", "sv" }, { "help_language", "sv" }, { "language", "sv" },
+    { "alphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+    { "tradAlphabet",
+      new char[]{ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
+                  'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
+                  'Y', 'Z' } },
+
+    //language orientation
+    { "orientation", "LeftToRight" },
+
+    //language numbering   
+    { "numbering", "additive" },
+
+    // largest numerical value
+    //{"MaxNumericalValue", new Integer()},
+    //These would not be used for EN. Only used for traditional numbering   
+    //{"numberGroups", new int[]{10,1}},
+    //These only used for mutiplicative-additive numbering
+    //{"multiplier", "10"},
+    //{"multiplierChar", "M"}, 
+    //{"digits", new char[]{'a','b','c','d','e','f','g','h','i'}},
+    //{"digits", new char[]{0x10D0,0x10D1,0x10D2,0x10D3,0x10D4,0x10D5,0x10D6,0x10D7,0x10D8}},
+    //{"tens", new char[]{0x10D9,0x10DA,0x10DB,0x10DC,0x10DD,0x10DE,0x10DF,0x10E0,0x10E1}},  
+    //hundreds, etc...
+    //{"tables", new String[]{"tens", "digits"}}
+  };
+}
diff --git a/src/org/apache/xml/utils/res/XResources_zh_CN.java b/src/org/apache/xml/utils/res/XResources_zh_CN.java
index 601aaca..c6ab342 100644
--- a/src/org/apache/xml/utils/res/XResources_zh_CN.java
+++ b/src/org/apache/xml/utils/res/XResources_zh_CN.java
@@ -49,8 +49,8 @@
  *
  * This software consists of voluntary contributions made by many
  * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, Lotus
- * Development Corporation., http://www.lotus.com.  For more
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
  * information on the Apache Software Foundation, please see
  * <http://www.apache.org/>.
  */
diff --git a/src/org/apache/xml/utils/res/XResources_zh_TW.java b/src/org/apache/xml/utils/res/XResources_zh_TW.java
index e0507f2..e4e87a2 100644
--- a/src/org/apache/xml/utils/res/XResources_zh_TW.java
+++ b/src/org/apache/xml/utils/res/XResources_zh_TW.java
@@ -49,8 +49,8 @@
  *
  * This software consists of voluntary contributions made by many
  * individuals on behalf of the Apache Software Foundation and was
- * originally based on software copyright (c) 1999, Lotus
- * Development Corporation., http://www.lotus.com.  For more
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
  * information on the Apache Software Foundation, please see
  * <http://www.apache.org/>.
  */
diff --git a/src/org/apache/xpath/Expression.java b/src/org/apache/xpath/Expression.java
index 778a3ce..e626cdc 100644
--- a/src/org/apache/xpath/Expression.java
+++ b/src/org/apache/xpath/Expression.java
@@ -418,7 +418,7 @@
    * Warn the user of an problem.
    *
    * @param xctxt The XPath runtime context.
-   * @param msg An error number that corresponds to one of the numbers found
+   * @param msg An error msgkey that corresponds to one of the conststants found
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which
@@ -429,7 +429,7 @@
    *
    * @throws javax.xml.transform.TransformerException
    */
-  public void warn(XPathContext xctxt, int msg, Object[] args)
+  public void warn(XPathContext xctxt, String msg, Object[] args)
           throws javax.xml.transform.TransformerException
   {
 
@@ -473,7 +473,7 @@
    * exception.
    *
    * @param xctxt The XPath runtime context.
-   * @param msg An error number that corresponds to one of the numbers found
+   * @param msg An error msgkey that corresponds to one of the constants found
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which
@@ -484,7 +484,7 @@
    *
    * @throws javax.xml.transform.TransformerException
    */
-  public void error(XPathContext xctxt, int msg, Object[] args)
+  public void error(XPathContext xctxt, String msg, Object[] args)
           throws javax.xml.transform.TransformerException
   {
 
diff --git a/src/org/apache/xpath/XPath.java b/src/org/apache/xpath/XPath.java
index 36479e8..03672e2 100644
--- a/src/org/apache/xpath/XPath.java
+++ b/src/org/apache/xpath/XPath.java
@@ -493,7 +493,7 @@
    *
    * @param xctxt The XPath runtime context.
    * @param sourceNode Not used.
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -503,7 +503,7 @@
    *                              throw an exception.
    */
   public void warn(
-          XPathContext xctxt, int sourceNode, int msg, Object[] args)
+          XPathContext xctxt, int sourceNode, String msg, Object[] args)
             throws javax.xml.transform.TransformerException
   {
 
@@ -546,7 +546,7 @@
    *
    * @param xctxt The XPath runtime context.
    * @param sourceNode Not used.
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -556,7 +556,7 @@
    *                              throw an exception.
    */
   public void error(
-          XPathContext xctxt, int sourceNode, int msg, Object[] args)
+          XPathContext xctxt, int sourceNode, String msg, Object[] args)
             throws javax.xml.transform.TransformerException
   {
 
diff --git a/src/org/apache/xpath/compiler/Compiler.java b/src/org/apache/xpath/compiler/Compiler.java
index 89ef96a..28424f7 100644
--- a/src/org/apache/xpath/compiler/Compiler.java
+++ b/src/org/apache/xpath/compiler/Compiler.java
@@ -1151,7 +1151,7 @@
   /**
    * Warn the user of an problem.
    *
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -1160,7 +1160,7 @@
    * @throws TransformerException if the current ErrorListoner determines to 
    *                              throw an exception.
    */
-  public void warn(int msg, Object[] args) throws TransformerException
+  public void warn(String msg, Object[] args) throws TransformerException
   {
 
     java.lang.String fmsg = XSLMessages.createXPATHWarning(msg, args);
@@ -1204,7 +1204,7 @@
    * Tell the user of an error, and probably throw an
    * exception.
    *
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -1213,7 +1213,7 @@
    * @throws TransformerException if the current ErrorListoner determines to 
    *                              throw an exception.
    */
-  public void error(int msg, Object[] args) throws TransformerException
+  public void error(String msg, Object[] args) throws TransformerException
   {
 
     java.lang.String fmsg = XSLMessages.createXPATHMessage(msg, args);
diff --git a/src/org/apache/xpath/compiler/OpMap.java b/src/org/apache/xpath/compiler/OpMap.java
index 5d0b372..6c18b03 100644
--- a/src/org/apache/xpath/compiler/OpMap.java
+++ b/src/org/apache/xpath/compiler/OpMap.java
@@ -338,7 +338,7 @@
    * Tell the user of an error, and probably throw an
    * exception.
    *
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -347,7 +347,7 @@
    * @throws TransformerException if the current ErrorListoner determines to 
    *                              throw an exception.
    */
-  public void error(int msg, Object[] args) throws javax.xml.transform.TransformerException
+  public void error(String msg, Object[] args) throws javax.xml.transform.TransformerException
   {
 
     java.lang.String fmsg = org.apache.xalan.res.XSLMessages.createXPATHMessage(msg, args);
diff --git a/src/org/apache/xpath/compiler/XPathParser.java b/src/org/apache/xpath/compiler/XPathParser.java
index 3df7f7d..9484ec5 100644
--- a/src/org/apache/xpath/compiler/XPathParser.java
+++ b/src/org/apache/xpath/compiler/XPathParser.java
@@ -578,7 +578,7 @@
   /**
    * Warn the user of a problem.
    *
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -587,7 +587,7 @@
    * @throws TransformerException if the current ErrorListoner determines to 
    *                              throw an exception.
    */
-  void warn(int msg, Object[] args) throws TransformerException
+  void warn(String msg, Object[] args) throws TransformerException
   {
 
     String fmsg = XSLMessages.createXPATHWarning(msg, args);
@@ -631,7 +631,7 @@
    * Notify the user of an error, and probably throw an
    * exception.
    *
-   * @param msg An error number that corresponds to one of the numbers found 
+   * @param msg An error msgkey that corresponds to one of the constants found 
    *            in {@link org.apache.xpath.res.XPATHErrorResources}, which is 
    *            a key for a format string.
    * @param args An array of arguments represented in the format string, which 
@@ -640,7 +640,7 @@
    * @throws TransformerException if the current ErrorListoner determines to 
    *                              throw an exception.
    */
-  void error(int msg, Object[] args) throws TransformerException
+  void error(String msg, Object[] args) throws TransformerException
   {
 
     String fmsg = XSLMessages.createXPATHMessage(msg, args);
diff --git a/src/org/apache/xpath/objects/XObject.java b/src/org/apache/xpath/objects/XObject.java
index a10aeaa..f297f15 100644
--- a/src/org/apache/xpath/objects/XObject.java
+++ b/src/org/apache/xpath/objects/XObject.java
@@ -711,7 +711,7 @@
    *
    * @throws javax.xml.transform.TransformerException
    */
-  protected void error(int msg)
+  protected void error(String msg)
           throws javax.xml.transform.TransformerException
   {
     error(msg, null);
@@ -726,7 +726,7 @@
    *
    * @throws javax.xml.transform.TransformerException
    */
-  protected void error(int msg, Object[] args)
+  protected void error(String msg, Object[] args)
           throws javax.xml.transform.TransformerException
   {
 
diff --git a/src/org/apache/xpath/res/XPATHErrorResourceBundle.java b/src/org/apache/xpath/res/XPATHErrorResourceBundle.java
new file mode 100644
index 0000000..0196c95
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResourceBundle.java
@@ -0,0 +1,130 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 1999, Lotus
+ * Development Corporation., http://www.lotus.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import java.util.*;
+
+/**
+ * <meta name="usage" content="internal"/>
+ * The default (english) resource bundle.
+ */
+public class XPATHErrorResourceBundle extends ListResourceBundle
+{
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+
+  /** The association list.         */
+  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" },
+
+    { "ERROR0061", "0061" }, { "ERROR0062", "0062" }, { "ERROR0063", "0063" },
+    { "ERROR0064", "0064" }, { "ERROR0065", "0065" }, { "ERROR0066", "0066" },
+    { "ERROR0067", "0067" }, { "ERROR0068", "0068" }, { "ERROR0069", "0069" },
+    { "ERROR0070", "0070" }, { "ERROR0071", "0071" }, { "ERROR0072", "0072" },
+    { "ERROR0073", "0073" }, { "ERROR0074", "0074" }, { "ERROR0075", "0075" },
+    { "ERROR0076", "0076" }, { "ERROR0077", "0077" }, { "ERROR0078", "0078" },
+    { "ERROR0079", "0079" }, { "ERROR0080", "0080" }, { "ERROR0081", "0081" },
+    { "ERROR0082", "0082" }, { "ERROR0083", "0083" }, { "ERROR0084", "0084" },
+    { "ERROR0085", "0085" }, { "ERROR0086", "0086" }, { "ERROR0087", "0087" },
+    { "ERROR0088", "0088" }, { "ERROR0089", "0089" }, { "ERROR0090", "0090" },
+    { "ERROR0091", "0091" }, { "ERROR0092", "0092" }, { "ERROR0093", "0093" },
+    { "ERROR0094", "0094" }, { "ERROR0095", "0095" }, { "ERROR0096", "0096" },
+    { "ERROR0097", "0097" }, { "ERROR0098", "0098" }, { "ERROR0099", "0099" },
+    { "ERROR0100", "0100" }, { "ERROR0101", "0101" }, { "ERROR0102", "0102" },
+    { "ERROR0103", "0103" }, { "ERROR0104", "0104" }, { "ERROR0105", "0105" },
+    { "ERROR0106", "0106" }, { "ERROR0107", "0107" }, { "ERROR0108", "0108" },
+    { "ERROR0109", "0109" }, { "ERROR0110", "0110" }, { "ERROR0111", "0111" },
+    { "ERROR0112", "0112" }, { "ERROR0113", "0113" }, { "ERROR0114", "0114" },
+    { "ERROR0115", "0115" }, { "ERROR0116", "0116" },
+
+    { "WARNING0001", "0001" }, { "WARNING0002", "0002" },
+    { "WARNING0003", "0003" }, { "WARNING0004", "0004" },
+    { "WARNING0005", "0005" }, { "WARNING0006", "0006" },
+    { "WARNING0007", "0007" }, { "WARNING0008", "0008" },
+    { "WARNING0009", "0009" }, { "WARNING0010", "0010" },
+    { "WARNING0011", "0011" }
+  };
+}
diff --git a/src/org/apache/xpath/res/XPATHErrorResources.java b/src/org/apache/xpath/res/XPATHErrorResources.java
index aba3ccd..adfad6a 100644
--- a/src/org/apache/xpath/res/XPATHErrorResources.java
+++ b/src/org/apache/xpath/res/XPATHErrorResources.java
@@ -56,566 +56,1212 @@
  */
 package org.apache.xpath.res;
 
-import java.io.IOException;
-import java.io.InputStream;
+
+
+import java.util.*;
+
 import java.text.DecimalFormat;
-import java.util.Locale;
-import java.util.MissingResourceException;
-import java.util.PropertyResourceBundle;
-import java.util.ResourceBundle;
 
 /**
  * <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,
- * you need to first update the count of messages(MAX_CODE)or
- * the count of warnings(MAX_WARNING). The array will be
- * automatically filled in with the keys, but you need to
- * fill in the actual message string. Follow the instructions
- * below.
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
  */
-public class XPATHErrorResources extends PropertyResourceBundle
+public class XPATHErrorResources extends ListResourceBundle
 {
-  
-  public XPATHErrorResources()
-  	throws java.io.IOException
-  {
-    super(null);
-  }
-  
-  public XPATHErrorResources(InputStream is) 
-  	throws java.io.IOException
-  {
-  	super(is);
-  }
 
-  /** Field ERROR_SUFFIX          */
-  public static final String ERROR_SUFFIX = "ER";
+/*
+ * General notes to translators:
+ *
+ * This file contains error and warning messages related to XPath Error
+ * Handling.
+ *
+ *  1) Xalan (or more properly, Xalan-interpretive) and XSLTC are names of
+ *     components.
+ *     XSLT is an acronym for "XML Stylesheet Language: Transformations".
+ *     XSLTC is an acronym for XSLT Compiler.
+ *
+ *  2) A stylesheet is a description of how to transform an input XML document
+ *     into a resultant XML document (or HTML document or text).  The
+ *     stylesheet itself is described in the form of an XML document.
+ *
+ *  3) A template is a component of a stylesheet that is used to match a
+ *     particular portion of an input document and specifies the form of the
+ *     corresponding portion of the output document.
+ *
+ *  4) An element is a mark-up tag in an XML document; an attribute is a
+ *     modifier on the tag.  For example, in <elem attr='val' attr2='val2'>
+ *     "elem" is an element name, "attr" and "attr2" are attribute names with
+ *     the values "val" and "val2", respectively.
+ *
+ *  5) A namespace declaration is a special attribute that is used to associate
+ *     a prefix with a URI (the namespace).  The meanings of element names and
+ *     attribute names that use that prefix are defined with respect to that
+ *     namespace.
+ *
+ *  6) "Translet" is an invented term that describes the class file that
+ *     results from compiling an XML stylesheet into a Java class.
+ *
+ *  7) XPath is a specification that describes a notation for identifying
+ *     nodes in a tree-structured representation of an XML document.  An
+ *     instance of that notation is referred to as an XPath expression.
+ *
+ *  8) The context node is the node in the document with respect to which an
+ *     XPath expression is being evaluated.
+ *
+ *  9) An iterator is an object that traverses nodes in the tree, one at a time.
+ *
+ *  10) NCName is an XML term used to describe a name that does not contain a
+ *     colon (a "no-colon name").
+ *
+ *  11) QName is an XML term meaning "qualified name".
+ */
 
-  /** Field WARNING_SUFFIX          */
-  public static final String WARNING_SUFFIX = "WR";
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
 
-//  /** Field MAX_CODE          */
-//  public static final int MAX_CODE = 84;  // this is needed to keep track of the number of messages          
-//
-//  /** Field MAX_WARNING          */
-//  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
-//
-//  /** Field MAX_OTHERS          */
-//  public static final int MAX_OTHERS = 20;
-//
-//  /** Field MAX_MESSAGES          */
-//  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
-//
-//  /** Field contents          */
-//  static final Object[][] contents =
-//    new Object[MAX_MESSAGES + MAX_OTHERS + 1][2];
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
 
-  /*
-  * 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.
-  */
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  /* 
+   * static variables
+   */
+  public static final String ERROR0000 = "ERROR0000";
+  public static final String ER_CURRENT_NOT_ALLOWED_IN_MATCH = 
+	 "ER_CURRENT_NOT_ALLOWED_IN_MATCH";
+  public static final String ER_CURRENT_TAKES_NO_ARGS = 
+	 "ER_CURRENT_TAKES_NO_ARGS";
+  public static final String ER_DOCUMENT_REPLACED = "ER_DOCUMENT_REPLACED";
+  public static final String ER_CONTEXT_HAS_NO_OWNERDOC = 
+	 "ER_CONTEXT_HAS_NO_OWNERDOC";
+  public static final String ER_LOCALNAME_HAS_TOO_MANY_ARGS = 
+	 "ER_LOCALNAME_HAS_TOO_MANY_ARGS";
+  public static final String ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 
+	 "ER_NAMESPACEURI_HAS_TOO_MANY_ARGS";
+  public static final String ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 
+	 "ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS";
+  public static final String ER_NUMBER_HAS_TOO_MANY_ARGS = 
+	 "ER_NUMBER_HAS_TOO_MANY_ARGS";
+  public static final String ER_NAME_HAS_TOO_MANY_ARGS = 
+	 "ER_NAME_HAS_TOO_MANY_ARGS";
+  public static final String ER_STRING_HAS_TOO_MANY_ARGS = 
+	 "ER_STRING_HAS_TOO_MANY_ARGS";
+  public static final String ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 
+	 "ER_STRINGLENGTH_HAS_TOO_MANY_ARGS";
+  public static final String ER_TRANSLATE_TAKES_3_ARGS = 
+	 "ER_TRANSLATE_TAKES_3_ARGS";
+  public static final String ER_UNPARSEDENTITYURI_TAKES_1_ARG = 
+	 "ER_UNPARSEDENTITYURI_TAKES_1_ARG";
+  public static final String ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 
+	 "ER_NAMESPACEAXIS_NOT_IMPLEMENTED";
+  public static final String ER_UNKNOWN_AXIS = "ER_UNKNOWN_AXIS";
+  public static final String ER_UNKNOWN_MATCH_OPERATION = 
+	 "ER_UNKNOWN_MATCH_OPERATION";
+  public static final String ER_INCORRECT_ARG_LENGTH ="ER_INCORRECT_ARG_LENGTH";
+  public static final String ER_CANT_CONVERT_TO_NUMBER = 
+	 "ER_CANT_CONVERT_TO_NUMBER";
+  public static final String ER_CANT_CONVERT_TO_NODELIST = 
+	 "ER_CANT_CONVERT_TO_NODELIST";
+  public static final String ER_CANT_CONVERT_TO_MUTABLENODELIST = 
+	 "ER_CANT_CONVERT_TO_MUTABLENODELIST";
+  public static final String ER_CANT_CONVERT_TO_TYPE ="ER_CANT_CONVERT_TO_TYPE";
+  public static final String ER_EXPECTED_MATCH_PATTERN = 
+	 "ER_EXPECTED_MATCH_PATTERN";
+  public static final String ER_COULDNOT_GET_VAR_NAMED = 
+	 "ER_COULDNOT_GET_VAR_NAMED";
+  public static final String ER_UNKNOWN_OPCODE = "ER_UNKNOWN_OPCODE";
+  public static final String ER_EXTRA_ILLEGAL_TOKENS ="ER_EXTRA_ILLEGAL_TOKENS";
+  public static final String ER_EXPECTED_DOUBLE_QUOTE = 
+	 "ER_EXPECTED_DOUBLE_QUOTE";
+  public static final String ER_EXPECTED_SINGLE_QUOTE = 
+	 "ER_EXPECTED_SINGLE_QUOTE";
+  public static final String ER_EMPTY_EXPRESSION = "ER_EMPTY_EXPRESSION";
+  public static final String ER_EXPECTED_BUT_FOUND = "ER_EXPECTED_BUT_FOUND";
+  public static final String ER_INCORRECT_PROGRAMMER_ASSERTION = 
+	 "ER_INCORRECT_PROGRAMMER_ASSERTION";
+  public static final String ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 
+	 "ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL";
+  public static final String ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 
+	 "ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG";
+  public static final String ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 
+	 "ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG";
+  public static final String ER_PREDICATE_ILLEGAL_SYNTAX = 
+	 "ER_PREDICATE_ILLEGAL_SYNTAX";
+  public static final String ER_ILLEGAL_AXIS_NAME = "ER_ILLEGAL_AXIS_NAME";
+  public static final String ER_UNKNOWN_NODETYPE = "ER_UNKNOWN_NODETYPE";
+  public static final String ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 
+	 "ER_PATTERN_LITERAL_NEEDS_BE_QUOTED";
+  public static final String ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 
+	 "ER_COULDNOT_BE_FORMATTED_TO_NUMBER";
+  public static final String ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 
+	 "ER_COULDNOT_CREATE_XMLPROCESSORLIAISON";
+  public static final String ER_DIDNOT_FIND_XPATH_SELECT_EXP = 
+	 "ER_DIDNOT_FIND_XPATH_SELECT_EXP";
+  public static final String ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 
+	 "ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH";
+  public static final String ER_ERROR_OCCURED = "ER_ERROR_OCCURED";
+  public static final String ER_ILLEGAL_VARIABLE_REFERENCE = 
+	 "ER_ILLEGAL_VARIABLE_REFERENCE";
+  public static final String ER_AXES_NOT_ALLOWED = "ER_AXES_NOT_ALLOWED";
+  public static final String ER_KEY_HAS_TOO_MANY_ARGS = 
+	 "ER_KEY_HAS_TOO_MANY_ARGS";
+  public static final String ER_COUNT_TAKES_1_ARG = "ER_COUNT_TAKES_1_ARG";
+  public static final String ER_COULDNOT_FIND_FUNCTION = 
+	 "ER_COULDNOT_FIND_FUNCTION";
+  public static final String ER_UNSUPPORTED_ENCODING ="ER_UNSUPPORTED_ENCODING";
+  public static final String ER_PROBLEM_IN_DTM_NEXTSIBLING = 
+	 "ER_PROBLEM_IN_DTM_NEXTSIBLING";
+  public static final String ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 
+	 "ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL";
+  public static final String ER_SETDOMFACTORY_NOT_SUPPORTED = 
+	 "ER_SETDOMFACTORY_NOT_SUPPORTED";
+  public static final String ER_PREFIX_MUST_RESOLVE = "ER_PREFIX_MUST_RESOLVE";
+  public static final String ER_PARSE_NOT_SUPPORTED = "ER_PARSE_NOT_SUPPORTED";
+  public static final String ER_CREATEDOCUMENT_NOT_SUPPORTED = 
+	 "ER_CREATEDOCUMENT_NOT_SUPPORTED";
+  public static final String ER_CHILD_HAS_NO_OWNER_DOCUMENT = 
+	 "ER_CHILD_HAS_NO_OWNER_DOCUMENT";
+  public static final String ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 
+	 "ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT";
+  public static final String ER_SAX_API_NOT_HANDLED = "ER_SAX_API_NOT_HANDLED";
+public static final String ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 
+	 "ER_IGNORABLE_WHITESPACE_NOT_HANDLED";
+  public static final String ER_DTM_CANNOT_HANDLE_NODES = 
+	 "ER_DTM_CANNOT_HANDLE_NODES";
+  public static final String ER_XERCES_CANNOT_HANDLE_NODES = 
+	 "ER_XERCES_CANNOT_HANDLE_NODES";
+  public static final String ER_XERCES_PARSE_ERROR_DETAILS = 
+	 "ER_XERCES_PARSE_ERROR_DETAILS";
+  public static final String ER_XERCES_PARSE_ERROR = "ER_XERCES_PARSE_ERROR";
+  public static final String ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 
+	 "ER_CANT_OUTPUT_TEXT_BEFORE_DOC";
+  public static final String ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 
+	 "ER_CANT_HAVE_MORE_THAN_ONE_ROOT";
+  public static final String ER_INVALID_UTF16_SURROGATE = 
+	 "ER_INVALID_UTF16_SURROGATE";
+  public static final String ER_OIERROR = "ER_OIERROR";
+  public static final String ER_CANNOT_CREATE_URL = "ER_CANNOT_CREATE_URL";
+  public static final String ER_XPATH_READOBJECT = "ER_XPATH_READOBJECT";
+ public static final String ER_FUNCTION_TOKEN_NOT_FOUND = 
+	 "ER_FUNCTION_TOKEN_NOT_FOUND";
+ public static final String ER_ARG_LOCALNAME_NULL = "ER_ARG_LOCALNAME_NULL";
+  public static final String ER_CANNOT_DEAL_XPATH_TYPE = 
+	 "ER_CANNOT_DEAL_XPATH_TYPE";
+  public static final String ER_NODESET_NOT_MUTABLE = "ER_NODESET_NOT_MUTABLE";
+  public static final String ER_NODESETDTM_NOT_MUTABLE = 
+	 "ER_NODESETDTM_NOT_MUTABLE";
+   /**  Variable not resolvable:   */
+  public static final String ER_VAR_NOT_RESOLVABLE = "ER_VAR_NOT_RESOLVABLE";
+   /** Null error handler  */
+ public static final String ER_NULL_ERROR_HANDLER = "ER_NULL_ERROR_HANDLER";
+   /**  Programmer's assertion: unknown opcode  */
+  public static final String ER_PROG_ASSERT_UNKNOWN_OPCODE = 
+	 "ER_PROG_ASSERT_UNKNOWN_OPCODE";
+   /**  0 or 1   */
+  public static final String ER_ZERO_OR_ONE = "ER_ZERO_OR_ONE";
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  public static final String ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 
+	 "ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER";
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  public static final String ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = "ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER";
+   /**  fsb() not supported for XStringForChars   */
+  public static final String ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 
+	 "ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS";
+   /**  Could not find variable with the name of   */
+ public static final String ER_COULD_NOT_FIND_VAR = "ER_COULD_NOT_FIND_VAR";
+   /**  XStringForChars can not take a string for an argument   */
+ public static final String ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 
+	 "ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING";
+   /**  The FastStringBuffer argument can not be null   */
+ public static final String ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 
+	 "ER_FASTSTRINGBUFFER_CANNOT_BE_NULL";
+   /**  2 or 3   */
+  public static final String ER_TWO_OR_THREE = "ER_TWO_OR_THREE";
+   /** Variable accessed before it is bound! */
+  public static final String ER_VARIABLE_ACCESSED_BEFORE_BIND = 
+	 "ER_VARIABLE_ACCESSED_BEFORE_BIND";
+   /** XStringForFSB can not take a string for an argument! */
+ public static final String ER_FSB_CANNOT_TAKE_STRING = 
+	 "ER_FSB_CANNOT_TAKE_STRING";
+   /** Error! Setting the root of a walker to null! */
+  public static final String ER_SETTING_WALKER_ROOT_TO_NULL = 
+	 "ER_SETTING_WALKER_ROOT_TO_NULL";
+   /** This NodeSetDTM can not iterate to a previous node! */
+  public static final String ER_NODESETDTM_CANNOT_ITERATE = 
+	 "ER_NODESETDTM_CANNOT_ITERATE";
+  /** This NodeSet can not iterate to a previous node! */
+ public static final String ER_NODESET_CANNOT_ITERATE = 
+	 "ER_NODESET_CANNOT_ITERATE";
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  public static final String ER_NODESETDTM_CANNOT_INDEX = 
+	 "ER_NODESETDTM_CANNOT_INDEX";
+  /** This NodeSet can not do indexing or counting functions! */
+  public static final String ER_NODESET_CANNOT_INDEX = 
+	 "ER_NODESET_CANNOT_INDEX";
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  public static final String ER_CANNOT_CALL_SETSHOULDCACHENODE = 
+	 "ER_CANNOT_CALL_SETSHOULDCACHENODE";
+  /** {0} only allows {1} arguments */
+ public static final String ER_ONLY_ALLOWS = "ER_ONLY_ALLOWS";
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  public static final String ER_UNKNOWN_STEP = "ER_UNKNOWN_STEP";
+  /** Problem with RelativeLocationPath */
+  public static final String ER_EXPECTED_REL_LOC_PATH = 
+	 "ER_EXPECTED_REL_LOC_PATH";
+  /** Problem with LocationPath */
+  public static final String ER_EXPECTED_LOC_PATH = "ER_EXPECTED_LOC_PATH";
+  /** Problem with Step */
+  public static final String ER_EXPECTED_LOC_STEP = "ER_EXPECTED_LOC_STEP";
+  /** Problem with NodeTest */
+  public static final String ER_EXPECTED_NODE_TEST = "ER_EXPECTED_NODE_TEST";
+  /** Expected step pattern */
+  public static final String ER_EXPECTED_STEP_PATTERN = 
+	"ER_EXPECTED_STEP_PATTERN";
+  /** Expected relative path pattern */
+  public static final String ER_EXPECTED_REL_PATH_PATTERN = 
+	 "ER_EXPECTED_REL_PATH_PATTERN";
+  /** localname in QNAME should be a valid NCName */
+  public static final String ER_ARG_LOCALNAME_INVALID = 
+	 "ER_ARG_LOCALNAME_INVALID";
+  /** prefix in QNAME should be a valid NCName */
+  public static final String ER_ARG_PREFIX_INVALID = "ER_ARG_PREFIX_INVALID";
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  public static final String ER_CANT_CONVERT_TO_BOOLEAN = 
+	 "ER_CANT_CONVERT_TO_BOOLEAN";
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  public static final String ER_CANT_CONVERT_TO_SINGLENODE = 
+	 "ER_CANT_CONVERT_TO_SINGLENODE";
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  public static final String ER_CANT_GET_SNAPSHOT_LENGTH = 
+	 "ER_CANT_GET_SNAPSHOT_LENGTH";
+  /** Field ER_NON_ITERATOR_TYPE                */
+  public static final String ER_NON_ITERATOR_TYPE = "ER_NON_ITERATOR_TYPE";
+  /** Field ER_DOC_MUTATED                      */
+  public static final String ER_DOC_MUTATED = "ER_DOC_MUTATED";
+  public static final String ER_INVALID_XPATH_TYPE = "ER_INVALID_XPATH_TYPE";
+  public static final String ER_EMPTY_XPATH_RESULT = "ER_EMPTY_XPATH_RESULT";
+  public static final String ER_INCOMPATIBLE_TYPES = "ER_INCOMPATIBLE_TYPES";
+  public static final String ER_NULL_RESOLVER = "ER_NULL_RESOLVER";
+  public static final String ER_CANT_CONVERT_TO_STRING = 
+	 "ER_CANT_CONVERT_TO_STRING";
+  public static final String ER_NON_SNAPSHOT_TYPE = "ER_NON_SNAPSHOT_TYPE";
+  public static final String ER_WRONG_DOCUMENT = "ER_WRONG_DOCUMENT";
+  /* Note to translators:  The XPath expression cannot be evaluated with respect
+   * to this type of node.
+   */
+  /** Field ER_WRONG_NODETYPE                    */
+  public static final String ER_WRONG_NODETYPE = "ER_WRONG_NODETYPE";
+  public static final String ER_XPATH_ERROR = "ER_XPATH_ERROR";
+
+  public static final String WG_LOCALE_NAME_NOT_HANDLED = 
+	 "WG_LOCALE_NAME_NOT_HANDLED";
+  public static final String WG_PROPERTY_NOT_SUPPORTED = 
+	 "WG_PROPERTY_NOT_SUPPORTED";
+  public static final String WG_DONT_DO_ANYTHING_WITH_NS = 
+	 "WG_DONT_DO_ANYTHING_WITH_NS";
+  public static final String WG_SECURITY_EXCEPTION = "WG_SECURITY_EXCEPTION";
+  public static final String WG_QUO_NO_LONGER_DEFINED = 
+	 "WG_QUO_NO_LONGER_DEFINED";
+  public static final String WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 
+	 "WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST";
+  public static final String WG_FUNCTION_TOKEN_NOT_FOUND = 
+	 "WG_FUNCTION_TOKEN_NOT_FOUND";
+  public static final String WG_COULDNOT_FIND_FUNCTION = 
+	 "WG_COULDNOT_FIND_FUNCTION";
+  public static final String WG_CANNOT_MAKE_URL_FROM ="WG_CANNOT_MAKE_URL_FROM";
+  public static final String WG_EXPAND_ENTITIES_NOT_SUPPORTED = 
+	 "WG_EXPAND_ENTITIES_NOT_SUPPORTED";
+  public static final String WG_ILLEGAL_VARIABLE_REFERENCE = 
+	 "WG_ILLEGAL_VARIABLE_REFERENCE";
+  public static final String WG_UNSUPPORTED_ENCODING ="WG_UNSUPPORTED_ENCODING";
+
 
   // Error messages...
 
+  public static final Object[][] contents = {
+
   /** Field ERROR0000          */
-  public static final int ERROR0000 = 0;
+
+//  public static final int ERROR0000 = 0;
+
+  { "ERROR0000" , "{0}" },
+
 
   /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
-  public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+//  public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
 
+  { ER_CURRENT_NOT_ALLOWED_IN_MATCH, "The current() function is not allowed in a match pattern!" },
 
   /** Field ER_CURRENT_TAKES_NO_ARGS          */
-  public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
 
+  { ER_CURRENT_TAKES_NO_ARGS, "The current() function does not accept arguments!" },
 
   /** Field ER_DOCUMENT_REPLACED          */
-  public static final int ER_DOCUMENT_REPLACED = 3;
-
+//  public static final int ER_DOCUMENT_REPLACED = 3;
+  { ER_DOCUMENT_REPLACED,
+      "document() function implementation has been replaced by org.apache.xalan.xslt.FuncDocument!"},
+  
 
   /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
-  public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+ // public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
 
+  { ER_CONTEXT_HAS_NO_OWNERDOC,
+      "context does not have an owner document!"},
 
   /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
-  public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+ // public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
 
+  { ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() has too many arguments."},
 
   /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
-  public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+ //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
 
+  { ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() has too many arguments."},
 
   /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
-  public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
-
+//  public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+  { ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() has too many arguments."},
 
   /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
-  public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+//  public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
 
+  { ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() has too many arguments."},
 
   /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
-  public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+//  public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
 
+  { ER_NAME_HAS_TOO_MANY_ARGS,
+     "name() has too many arguments."},
 
   /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
-  public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+//  public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
 
+  { ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() has too many arguments."},
 
   /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
-  public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+//  public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
 
+  { ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length() has too many arguments."},
 
   /** Field ER_TRANSLATE_TAKES_3_ARGS          */
-  public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+//  public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
 
+  { ER_TRANSLATE_TAKES_3_ARGS,
+      "The translate() function takes three arguments!"},
 
   /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
-  public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+//  public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
 
+  { ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "The unparsed-entity-uri function should take one argument!"},
 
   /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
-  public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+//  public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
 
+  { ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "namespace axis not implemented yet!"},
 
   /** Field ER_UNKNOWN_AXIS          */
-  public static final int ER_UNKNOWN_AXIS = 15;
+//  public static final int ER_UNKNOWN_AXIS = 15;
 
+  { ER_UNKNOWN_AXIS,
+     "unknown axis: {0}"},
 
   /** Field ER_UNKNOWN_MATCH_OPERATION          */
-  public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+//  public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
 
+  { ER_UNKNOWN_MATCH_OPERATION,
+     "unknown match operation!"},
 
   /** Field ER_INCORRECT_ARG_LENGTH          */
-  public static final int ER_INCORRECT_ARG_LENGTH = 17;
+//  public static final int ER_INCORRECT_ARG_LENGTH = 17;
 
+  { ER_INCORRECT_ARG_LENGTH,
+      "Arg length of processing-instruction() node test is incorrect!"},
 
   /** Field ER_CANT_CONVERT_TO_NUMBER          */
-  public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+//  public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
 
+  { ER_CANT_CONVERT_TO_NUMBER,
+      "Can not convert {0} to a number"},
 
   /** Field ER_CANT_CONVERT_TO_NODELIST          */
-  public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
 
+  { ER_CANT_CONVERT_TO_NODELIST,
+      "Can not convert {0} to a NodeList!"},
 
   /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
-  public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+//  public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
 
+  { ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "Can not convert {0} to a NodeSetDTM!"},
 
   /** Field ER_CANT_CONVERT_TO_TYPE          */
-  public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+//  public static final int ER_CANT_CONVERT_TO_TYPE = 21;
 
+  { ER_CANT_CONVERT_TO_TYPE,
+      "Can not convert {0} to a type#{1}"},
 
   /** Field ER_EXPECTED_MATCH_PATTERN          */
-  public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+//  public static final int ER_EXPECTED_MATCH_PATTERN = 22;
 
+  { ER_EXPECTED_MATCH_PATTERN,
+      "Expected match pattern in getMatchScore!"},
 
   /** Field ER_COULDNOT_GET_VAR_NAMED          */
-  public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+//  public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
 
+  { ER_COULDNOT_GET_VAR_NAMED,
+      "Could not get variable named {0}"},
 
   /** Field ER_UNKNOWN_OPCODE          */
-  public static final int ER_UNKNOWN_OPCODE = 24;
+//  public static final int ER_UNKNOWN_OPCODE = 24;
 
+  { ER_UNKNOWN_OPCODE,
+     "ERROR! Unknown op code: {0}"},
 
   /** Field ER_EXTRA_ILLEGAL_TOKENS          */
-  public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+//  public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
 
+  { ER_EXTRA_ILLEGAL_TOKENS,
+     "Extra illegal tokens: {0}"},
 
   /** Field ER_EXPECTED_DOUBLE_QUOTE          */
-  public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+//  public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
 
+  { ER_EXPECTED_DOUBLE_QUOTE,
+      "misquoted literal... expected double quote!"},
 
   /** Field ER_EXPECTED_SINGLE_QUOTE          */
-  public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+//  public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
 
+  { ER_EXPECTED_SINGLE_QUOTE,
+      "misquoted literal... expected single quote!"},
 
   /** Field ER_EMPTY_EXPRESSION          */
-  public static final int ER_EMPTY_EXPRESSION = 28;
+//  public static final int ER_EMPTY_EXPRESSION = 28;
 
+  { ER_EMPTY_EXPRESSION,
+     "Empty expression!"},
 
   /** Field ER_EXPECTED_BUT_FOUND          */
-  public static final int ER_EXPECTED_BUT_FOUND = 29;
+//  public static final int ER_EXPECTED_BUT_FOUND = 29;
 
+  { ER_EXPECTED_BUT_FOUND,
+     "Expected {0}, but found: {1}"},
 
   /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
-  public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+//  public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
 
+  { ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "Programmer assertion is incorrect! - {0}"},
 
   /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
-  public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+//  public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
 
+  { ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "boolean(...) argument is no longer optional with 19990709 XPath draft."},
 
   /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
-  public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+//  public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
 
+  { ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "Found ',' but no preceding argument!"},
 
   /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
-  public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+//  public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
 
+  { ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "Found ',' but no following argument!"},
 
   /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
-  public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+//  public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
 
+  { ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predicate]' or '.[predicate]' is illegal syntax.  Use 'self::node()[predicate]' instead."},
 
   /** Field ER_ILLEGAL_AXIS_NAME          */
-  public static final int ER_ILLEGAL_AXIS_NAME = 35;
+//  public static final int ER_ILLEGAL_AXIS_NAME = 35;
 
+  { ER_ILLEGAL_AXIS_NAME,
+     "illegal axis name: {0}"},
 
   /** Field ER_UNKNOWN_NODETYPE          */
-  public static final int ER_UNKNOWN_NODETYPE = 36;
+//  public static final int ER_UNKNOWN_NODETYPE = 36;
 
+  { ER_UNKNOWN_NODETYPE,
+     "Unknown nodetype: {0}"},
 
   /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
-  public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+//  public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
 
+  { ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "Pattern literal ({0}) needs to be quoted!"},
 
   /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
-  public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+//  public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
 
+  { ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0} could not be formatted to a number!"},
 
   /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
-  public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+//  public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
 
+  { ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "Could not create XML TransformerFactory Liaison: {0}"},
 
   /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
-  public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+//  public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
 
+  { ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "Error! Did not find xpath select expression (-select)."},
 
   /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
-  public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+//  public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
 
+  { ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "ERROR! Could not find ENDOP after OP_LOCATIONPATH"},
 
   /** Field ER_ERROR_OCCURED          */
-  public static final int ER_ERROR_OCCURED = 42;
+//  public static final int ER_ERROR_OCCURED = 42;
 
+  { ER_ERROR_OCCURED,
+     "Error occured!"},
 
   /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
-  public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+//  public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
 
+  { ER_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference given for variable out of context or without definition!  Name = {0}"},
 
   /** Field ER_AXES_NOT_ALLOWED          */
-  public static final int ER_AXES_NOT_ALLOWED = 44;
+//  public static final int ER_AXES_NOT_ALLOWED = 44;
 
+  { ER_AXES_NOT_ALLOWED,
+      "Only child:: and attribute:: axes are allowed in match patterns!  Offending axes = {0}"},
 
   /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
-  public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+//  public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
 
+  { ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() has an incorrect number of arguments."},
 
   /** Field ER_COUNT_TAKES_1_ARG          */
-  public static final int ER_COUNT_TAKES_1_ARG = 46;
+//  public static final int ER_COUNT_TAKES_1_ARG = 46;
 
+  { ER_COUNT_TAKES_1_ARG,
+      "The count function should take one argument!"},
 
   /** Field ER_COULDNOT_FIND_FUNCTION          */
-  public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+//  public static final int ER_COULDNOT_FIND_FUNCTION = 47;
 
+  { ER_COULDNOT_FIND_FUNCTION,
+     "Could not find function: {0}"},
 
   /** Field ER_UNSUPPORTED_ENCODING          */
-  public static final int ER_UNSUPPORTED_ENCODING = 48;
+//  public static final int ER_UNSUPPORTED_ENCODING = 48;
 
+  { ER_UNSUPPORTED_ENCODING,
+     "Unsupported encoding: {0}"},
 
   /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
-  public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+//  public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
 
+  { ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "Problem occured in DTM in getNextSibling... trying to recover"},
 
   /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
-  public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+//  public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
 
+  { ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "Programmer error: EmptyNodeList can not be written to."},
 
   /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
-  public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+//  public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
 
+  { ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory is not supported by XPathContext!"},
 
   /** Field ER_PREFIX_MUST_RESOLVE          */
-  public static final int ER_PREFIX_MUST_RESOLVE = 52;
+//  public static final int ER_PREFIX_MUST_RESOLVE = 52;
 
+  { ER_PREFIX_MUST_RESOLVE,
+      "Prefix must resolve to a namespace: {0}"},
 
   /** Field ER_PARSE_NOT_SUPPORTED          */
-  public static final int ER_PARSE_NOT_SUPPORTED = 53;
+//  public static final int ER_PARSE_NOT_SUPPORTED = 53;
 
+  { ER_PARSE_NOT_SUPPORTED,
+      "parse (InputSource source) not supported in XPathContext! Can not open {0}"},
 
   /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
-  public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+//  public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
 
+  { ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument() not supported in XPathContext!"},
 
   /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
-  public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+//  public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
 
+  { ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "Attribute child does not have an owner document!"},
 
   /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
-  public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+//  public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
 
+  { ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "Attribute child does not have an owner document element!"},
 
   /** Field ER_SAX_API_NOT_HANDLED          */
-  public static final int ER_SAX_API_NOT_HANDLED = 57;
+//  public static final int ER_SAX_API_NOT_HANDLED = 57;
 
+  { ER_SAX_API_NOT_HANDLED,
+      "SAX API characters(char ch[]... not handled by the DTM!"},
 
   /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
-  public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+//public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
 
+  { ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... not handled by the DTM!"},
 
   /** Field ER_DTM_CANNOT_HANDLE_NODES          */
-  public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+//  public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
 
+  { ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison can not handle nodes of type {0}"},
 
   /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
-  public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+//  public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
 
+  { ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper can not handle nodes of type {0}"},
 
   /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
-  public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+//  public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
 
+  { ER_XERCES_PARSE_ERROR_DETAILS,
+      "DOM2Helper.parse error: SystemID - {0} line - {1}"},
 
   /** Field ER_XERCES_PARSE_ERROR          */
-  public static final int ER_XERCES_PARSE_ERROR = 62;
+//  public static final int ER_XERCES_PARSE_ERROR = 62;
 
+  { ER_XERCES_PARSE_ERROR,
+     "DOM2Helper.parse error"},
 
   /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
-  public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+//  public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
 
+  { ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "Warning: can't output text before document element!  Ignoring..."},
 
   /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
-  public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+//  public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
 
+  { ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "Can't have more than one root on a DOM!"},
 
   /** Field ER_INVALID_UTF16_SURROGATE          */
-  public static final int ER_INVALID_UTF16_SURROGATE = 65;
+//  public static final int ER_INVALID_UTF16_SURROGATE = 65;
 
+  { ER_INVALID_UTF16_SURROGATE,
+      "Invalid UTF-16 surrogate detected: {0} ?"},
 
   /** Field ER_OIERROR          */
-  public static final int ER_OIERROR = 66;
+  //public static final int ER_OIERROR = 66;
 
+  { ER_OIERROR,
+     "IO error"},
 
   /** Field ER_CANNOT_CREATE_URL          */
-  public static final int ER_CANNOT_CREATE_URL = 67;
+  //public static final int ER_CANNOT_CREATE_URL = 67;
 
+  { ER_CANNOT_CREATE_URL,
+     "Cannot create url for: {0}"},
 
   /** Field ER_XPATH_READOBJECT          */
-  public static final int ER_XPATH_READOBJECT = 68;
+//  public static final int ER_XPATH_READOBJECT = 68;
 
+  { ER_XPATH_READOBJECT,
+     "In XPath.readObject: {0}"},
   
   /** Field ER_XPATH_READOBJECT         */
-  public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+// public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
 
+  { ER_FUNCTION_TOKEN_NOT_FOUND,
+      "function token not found."},
   
    /**  Argument 'localName' is null  */
-  public static final int ER_ARG_LOCALNAME_NULL = 70;
+// public static final int ER_ARG_LOCALNAME_NULL = 70;
 
+  { ER_FUNCTION_TOKEN_NOT_FOUND,
+       "Argument 'localName' is null"},
   
    /**  Can not deal with XPath type:   */
-  public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+//  public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
 
+  { ER_CANNOT_DEAL_XPATH_TYPE,
+       "Can not deal with XPath type: {0}"},
   
    /**  This NodeSet is not mutable  */
-  public static final int ER_NODESET_NOT_MUTABLE = 72;
+ // public static final int ER_NODESET_NOT_MUTABLE = 72;
 
+  { ER_NODESET_NOT_MUTABLE,
+       "This NodeSet is not mutable"},
   
    /**  This NodeSetDTM is not mutable  */
-  public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+//  public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
 
+  { ER_NODESETDTM_NOT_MUTABLE,
+       "This NodeSetDTM is not mutable"},
   
    /**  Variable not resolvable:   */
-  public static final int ER_VAR_NOT_RESOLVABLE = 74;
+//  public static final int ER_VAR_NOT_RESOLVABLE = 74;
 
+  { ER_VAR_NOT_RESOLVABLE,
+        "Variable not resolvable: {0}"},
   
    /** Null error handler  */
-  public static final int ER_NULL_ERROR_HANDLER = 75;
+// public static final int ER_NULL_ERROR_HANDLER = 75;
 
+  { ER_NULL_ERROR_HANDLER,
+        "Null error handler"},
   
    /**  Programmer's assertion: unknown opcode  */
-  public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+ // public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
 
+  { ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "Programmer''s assertion: unknown opcode: {0}"},
   
    /**  0 or 1   */
-  public static final int ER_ZERO_OR_ONE = 77;
+//  public static final int ER_ZERO_OR_ONE = 77;
 
+  { ER_ZERO_OR_ONE,
+       "0 or 1"},
   
   
    /**  rtf() not supported by XRTreeFragSelectWrapper   */
-  public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
 
+  { ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() not supported by XRTreeFragSelectWrapper"},
   
    /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
-  public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
 
+  { ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() not supported by XRTreeFragSelectWrapper"},
   
    /**  fsb() not supported for XStringForChars   */
-  public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+ // public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
 
+  { ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb() not supported for XStringForChars"},
   
    /**  Could not find variable with the name of   */
-  public static final int ER_COULD_NOT_FIND_VAR = 81;
+// public static final int ER_COULD_NOT_FIND_VAR = 81;
 
+  { ER_COULD_NOT_FIND_VAR,
+      "Could not find variable with the name of {0}"},
   
    /**  XStringForChars can not take a string for an argument   */
-  public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+// public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
 
+  { ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars can not take a string for an argument"},
   
    /**  The FastStringBuffer argument can not be null   */
-  public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+// public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
 
-  
+  { ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "The FastStringBuffer argument can not be null"},
+
+  /* MANTIS_XALAN CHANGE: BEGIN */ 
    /**  2 or 3   */
-  public static final int ER_TWO_OR_THREE = 84;
+//  public static final int ER_TWO_OR_THREE = 84;
 
-  
-// Variable accessed before it is bound!
-  public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
-  
-  // XStringForFSB can not take a string for an argument!
-  public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
-  
-  // Error! Setting the root of a walker to null!
-  public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
-  
-  // This NodeSetDTM can not iterate to a previous node!
-  public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
-  
-  // This NodeSet can not iterate to a previous node!
-  public static final int ER_NODESET_CANNOT_ITERATE = 89;
+  { ER_TWO_OR_THREE,
+       "2 or 3"},
 
-  // This NodeSetDTM can not do indexing or counting functions!
-  public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
-  
-  // This NodeSet can not do indexing or counting functions!
-  public static final int ER_NODESET_CANNOT_INDEX = 91;
+   /** Variable accessed before it is bound! */
+//  public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
 
-  // Can not call setShouldCacheNodes after nextNode has been called!
-  public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
-  
-  // {0} only allows {1} arguments
-  public static final int ER_ONLY_ALLOWS = 93;
-  
-  // Programmer's assertion in getNextStepPos: unknown stepType: {0}
-  public static final int ER_UNKNOWN_STEP = 94;
-  
+  { ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "Variable accessed before it is bound!"},
+
+   /** XStringForFSB can not take a string for an argument! */
+// public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+  { ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB can not take a string for an argument!"},
+
+   /** Error! Setting the root of a walker to null! */
+//  public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+  { ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! Error! Setting the root of a walker to null!!!"},
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+//  public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+  { ER_NODESETDTM_CANNOT_ITERATE,
+       "This NodeSetDTM can not iterate to a previous node!"},
+
+  /** This NodeSet can not iterate to a previous node! */
+// public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+  { ER_NODESET_CANNOT_ITERATE,
+       "This NodeSet can not iterate to a previous node!"},
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+//  public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+  { ER_NODESETDTM_CANNOT_INDEX,
+       "This NodeSetDTM can not do indexing or counting functions!"},
+
+  /** This NodeSet can not do indexing or counting functions! */
+//  public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+  { ER_NODESET_CANNOT_INDEX,
+       "This NodeSet can not do indexing or counting functions!"},
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+//  public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+  { ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "Can not call setShouldCacheNodes after nextNode has been called!"},
+
+  /** {0} only allows {1} arguments */
+// public static final int ER_ONLY_ALLOWS = 93;
+
+  { ER_ONLY_ALLOWS,
+       "{0} only allows {1} arguments"},
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+//  public static final int ER_UNKNOWN_STEP = 94;
+
+  { ER_UNKNOWN_STEP,
+       "Programmer''s assertion in getNextStepPos: unknown stepType: {0}"},
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
   /** Problem with RelativeLocationPath */
-  public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+//  public static final int ER_EXPECTED_REL_LOC_PATH = 95;
 
+  { ER_EXPECTED_REL_LOC_PATH,
+      "A relative location path was expected following the '/' or '//' token."},
 
-   /** Problem with LocationPath */
-  public static final int ER_EXPECTED_LOC_PATH = 96;
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
 
+  /** Problem with LocationPath */
+//  public static final int ER_EXPECTED_LOC_PATH = 96;
 
-   /** Problem with Step */
-  public static final int ER_EXPECTED_LOC_STEP = 97;
+  { ER_EXPECTED_LOC_PATH,
+       "A location path was expected, but the following token was encountered\u003a  {0}"},
 
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
 
-   /** Problem with NodeTest */
-  public static final int ER_EXPECTED_NODE_TEST = 98;
+  /** Problem with Step */
+//  public static final int ER_EXPECTED_LOC_STEP = 97;
 
+  { ER_EXPECTED_LOC_STEP,
+       "A location step was expected following the '/' or '//' token."},
 
-   /** Expected step pattern */
-  public static final int ER_EXPECTED_STEP_PATTERN = 99;
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
 
+  /** Problem with NodeTest */
+//  public static final int ER_EXPECTED_NODE_TEST = 98;
+
+  { ER_EXPECTED_NODE_TEST,
+       "A node test that matches either NCName:* or QName was expected."},
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+//  public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+  { ER_EXPECTED_STEP_PATTERN,
+       "A step pattern was expected, but '/' was encountered."},
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+//  public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+  { ER_EXPECTED_REL_PATH_PATTERN,
+       "A relative path pattern was expected."},
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+//  public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+  { ER_ARG_LOCALNAME_INVALID,
+       "Localname in QNAME should be a valid NCName"},
   
-   /** Expected relative path pattern */
-  public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
-  
-  /** localname in QNAME should be a valid NCName */  
-  public static final int ER_ARG_LOCALNAME_INVALID = 101;
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
 
   /** prefix in QNAME should be a valid NCName */
-  public static final int ER_ARG_PREFIX_INVALID = 102;
+ // public static final int ER_ARG_PREFIX_INVALID = 102;
 
- 
-/** Field ER_CANT_CONVERT_TO_BOOLEAN          */
-  public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
-  
-  
-/** Field ER_CANT_CONVERT_TO_SINGLENODE       */
-  public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;  
+  { ER_ARG_PREFIX_INVALID,
+       "Prefix in QNAME should be a valid NCName"},
 
-/** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
-  public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
-  
-/** Field ER_NON_ITERATOR_TYPE                */
-  public static final int ER_NON_ITERATOR_TYPE        = 106;
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
 
-/** Field ER_DOC_MUTATED                      */
-  public static final int ER_DOC_MUTATED              = 107;
-  
-/** Field ER_INVALID_XPATH_TYPE               */
-  public static final int ER_INVALID_XPATH_TYPE       = 108;
-  
-/** Field ER_EMPTY_XPATH_RESULT                */
-  public static final int ER_EMPTY_XPATH_RESULT       = 109;
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+//  public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
 
-/** Field ER_INCOMPATIBLE_TYPES                */
-  public static final int ER_INCOMPATIBLE_TYPES       = 110;  
-  
-/** Field ER_NULL_RESOLVER                     */
-  public static final int ER_NULL_RESOLVER            = 111;
+  { ER_CANT_CONVERT_TO_BOOLEAN,
+       "Cannot convert {0} to a boolean."},
 
-/** Field ER_CANT_CONVERT_TO_STRING            */
-  public static final int ER_CANT_CONVERT_TO_STRING   = 112;
-  
-/** Field ER_NON_SNAPSHOT_TYPE                 */
-  public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
 
-/** Field ER_WRONG_DOCUMENT                    */
-  public static final int ER_WRONG_DOCUMENT          = 114;
- 
-/** Field ER_WRONG_NODETYPE                    */
-  public static final int ER_WRONG_NODETYPE          = 115; 
-  
-/** Field ER_XPATH_ERROR                       */  
-  public static final int ER_XPATH_ERROR             = 116;
-  
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+  { ER_CANT_CONVERT_TO_SINGLENODE,
+       "Cannot convert {0} to a single node. This getter applies to types ANY_UNORDERED_NODE_TYPE and FIRST_ORDERED_NODE_TYPE."},
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+//  public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+  { ER_CANT_GET_SNAPSHOT_LENGTH,
+       "Cannot get snapshot length on type: {0}. This getter applies to types UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE."},
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+  { ER_NON_ITERATOR_TYPE,
+       "Cannot iterate over non-iterator type: {0}"},
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+//  public static final int ER_DOC_MUTATED              = 107;
+
+  { ER_DOC_MUTATED,
+       "Document mutated since result was returned. Iterator is invalid."},
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+//  public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+  { ER_INVALID_XPATH_TYPE,
+       "Invalid XPath type argument: {0}"},
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+//  public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+  { ER_EMPTY_XPATH_RESULT,
+       "Empty XPath result object"},
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+//  public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+  { ER_INCOMPATIBLE_TYPES,
+       "The returned type: {0} cannot be coerced into the specified type: {1}"},
+
+  /** Field ER_NULL_RESOLVER                     */
+ // public static final int ER_NULL_RESOLVER            = 111;
+
+  { ER_NULL_RESOLVER,
+       "Unable to resolve prefix with null prefix resolver."},
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+//  public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+  { ER_CANT_CONVERT_TO_STRING,
+       "Cannot convert {0} to a string."},
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+//  public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+  { ER_NON_SNAPSHOT_TYPE,
+       "Cannot call snapshotItem on type: {0}. This method applies to types UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE."},
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+//  public static final int ER_WRONG_DOCUMENT          = 114;
+
+  { ER_WRONG_DOCUMENT,
+       "Context node does not belong to the document that is bound to this XPathEvaluator."},
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+//  public static final int ER_WRONG_NODETYPE          = 115;
+
+  { ER_WRONG_NODETYPE,
+       "The context node type is not supported."},
+
+  /** Field ER_XPATH_ERROR                       */
+//  public static final int ER_XPATH_ERROR             = 116;
+
+  { ER_XPATH_ERROR,
+       "Unknown error in XPath."},
+
+
   // Warnings...
 
   /** Field WG_LOCALE_NAME_NOT_HANDLED          */
-  public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+//  public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
 
+  { WG_LOCALE_NAME_NOT_HANDLED,
+      "locale name in the format-number function not yet handled!"},
 
   /** Field WG_PROPERTY_NOT_SUPPORTED          */
-  public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+//  public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
 
+  { WG_PROPERTY_NOT_SUPPORTED,
+      "XSL Property not supported: {0}"},
 
   /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
-  public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+//  public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
 
+  { WG_DONT_DO_ANYTHING_WITH_NS,
+      "Do not currently do anything with namespace {0} in property: {1}"},
 
   /** Field WG_SECURITY_EXCEPTION          */
-  public static final int WG_SECURITY_EXCEPTION = 4;
+// public static final int WG_SECURITY_EXCEPTION = 4;
 
+  { WG_SECURITY_EXCEPTION,
+      "SecurityException when trying to access XSL system property: {0}"},
 
   /** Field WG_QUO_NO_LONGER_DEFINED          */
-  public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+//  public static final int WG_QUO_NO_LONGER_DEFINED = 5;
 
+  { WG_QUO_NO_LONGER_DEFINED,
+      "Old syntax: quo(...) is no longer defined in XPath."},
 
   /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
-  public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+// public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
 
+  { WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath needs a derived object to implement nodeTest!"},
 
   /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
-  public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+//  public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
 
+  { WG_FUNCTION_TOKEN_NOT_FOUND,
+      "function token not found."},
 
   /** Field WG_COULDNOT_FIND_FUNCTION          */
-  public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+//  public static final int WG_COULDNOT_FIND_FUNCTION = 8;
 
+  { WG_COULDNOT_FIND_FUNCTION,
+      "Could not find function: {0}"},
 
   /** Field WG_CANNOT_MAKE_URL_FROM          */
-  public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+//  public static final int WG_CANNOT_MAKE_URL_FROM = 9;
 
+  { WG_CANNOT_MAKE_URL_FROM,
+      "Can not make URL from: {0}"},
 
   /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
-  public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+//  public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
 
+  { WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "-E option not supported for DTM parser"},
 
   /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
-  public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+//  public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
 
+  { WG_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference given for variable out of context or without definition!  Name = {0}"},
 
   /** Field WG_UNSUPPORTED_ENCODING          */
-  public static final int WG_UNSUPPORTED_ENCODING = 12;
+//  public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+  { WG_UNSUPPORTED_ENCODING,
+     "Unsupported encoding: {0}"},
+
 
 
   // Other miscellaneous text used inside the code...
+  { "ui_language", "en"},
+  { "help_language", "en"},
+  { "language", "en"},
+  { "BAD_CODE", "Parameter to createMessage was out of bounds"},
+  { "FORMAT_FAILED", "Exception thrown during messageFormat call"},
+  { "version", ">>>>>>> Xalan Version "},
+  { "version2", "<<<<<<<"},
+  { "yes", "yes"},
+  { "line", "Line #"},
+  { "column", "Column #"},
+  { "xsldone", "XSLProcessor: done"},
+  { "xpath_option", "xpath options: "},
+  { "optionIN", "   [-in inputXMLURL]"},
+  { "optionSelect", "   [-select xpath expression]"},
+  { "optionMatch", "   [-match match pattern (for match diagnostics)]"},
+  { "optionAnyExpr", "Or just an xpath expression will do a diagnostic dump"},
+  { "noParsermsg1", "XSL Process was not successful."},
+  { "noParsermsg2", "** Could not find parser **"},
+  { "noParsermsg3", "Please check your classpath."},
+  { "noParsermsg4", "If you don't have IBM's XML Parser for Java, you can download it from"},
+  { "noParsermsg5", "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"},
+  { "gtone", ">1" },
+  { "zero", "0" },
+  { "one", "1" },
+  { "two" , "2" },
+  { "three", "3" }
+
+  };
+
 
   // ================= INFRASTRUCTURE ======================
 
@@ -647,15 +1293,15 @@
   /** Field QUERY_HEADER          */
   public static final String QUERY_HEADER = "PATTERN ";
 
-//  /**
-//   * Get the association list.
-//   *
-//   * @return The association list.
-//   */
-//  public Object[][] getContents()
-//  {
-//    return contents;
-//  }
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
 
   /**
    * Return a named ResourceBundle for a particular locale.  This method mimics the behavior
@@ -668,7 +1314,7 @@
    * @return the ResourceBundle
    * @throws MissingResourceException
    */
-  public static final ResourceBundle loadResourceBundle(String className)
+  public static final XPATHErrorResources loadResourceBundle(String className)
           throws MissingResourceException
   {
 
@@ -679,7 +1325,7 @@
     {
 
       // first try with the given locale
-      return ResourceBundle.getBundle(className
+      return (XPATHErrorResources) ResourceBundle.getBundle(className
               + suffix, locale);
     }
     catch (MissingResourceException e)
@@ -689,7 +1335,7 @@
 
         // Since we can't find the localized property file,
         // fall back to en_US.
-        return ResourceBundle.getBundle(className,
+        return (XPATHErrorResources) ResourceBundle.getBundle(className,
                 new Locale("en", "US"));
       }
       catch (MissingResourceException e2)
@@ -723,83 +1369,4 @@
     return suffix;
   }
 
-  /**
-   * Get the error string associated with the error code
-   *
-   * @param errorCode Error code
-   *
-   * @return error string associated with the given error code
-   */
-  public static String getMessageKey(int errorCode)
-  {
-
-//    if (errorCode > MAX_CODE)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return ERROR_SUFFIX + df.format(errorCode);
-    }
-  }
-
-  /**
-   * Get the warning string associated with the error code
-   *
-   * @param errorCode Error code
-   * 
-   * @return warning string associated with the given error code
-   */
-  public static String getWarningKey(int errorCode)
-  {
-
-//    if (errorCode > MAX_WARNING)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return WARNING_SUFFIX + df.format(errorCode);
-    }
-  }
-
-  /**
-   * Get the key string for an error based on the integer representation.
-   *
-   * @param errorCode Error code
-   * 
-   * @return key string that may be used for lookup in the association table.
-   */
-  public static String getMKey(int errorCode)
-  {
-
-//    if (errorCode > MAX_CODE)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return ERROR_SUFFIX + df.format(errorCode);
-    }
-  }
-
-  /**
-   * Get the key string for an warning based on the integer representation.
-   *
-   * @param errorCode Error code
-   * 
-   * @return key string that may be used for lookup in the association table.
-   */
-  public static String getWKey(int errorCode)
-  {
-
-//    if (errorCode > MAX_WARNING)
-//      return null;
-//    else
-    {
-      DecimalFormat df = new DecimalFormat("0000");
-
-      return WARNING_SUFFIX + df.format(errorCode);
-    }
-  }
 }
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_de.java b/src/org/apache/xpath/res/XPATHErrorResources_de.java
new file mode 100644
index 0000000..6df1338
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_de.java
@@ -0,0 +1,1374 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems, 
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_de extends XPATHErrorResources
+{
+
+
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+  // Error messages...
+
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "Funktion current() in einem Muster nicht zul\u00e4ssig!"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "Funktion current() hat keine Argumente!"},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "Die Implementierung der Funktion document() wurde durch org.apache.xalan.xslt.FuncDocument ersetzt!"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "Kontext hat kein Eigent\u00fcmer-Dokument!"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() hat zu viele Argumente."},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() hat zu viele Argumente."},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() hat zu viele Argumente."},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() hat zu viele Argumente."},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name() hat zu viele Argumente."},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() hat zu viele Argumente."},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length() hat zu viele Argumente."},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "Funktion translate() hat drei Argumente!"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "Funktion unparsed-entity-uri hat ein Argument!"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "Namensraum-Achse noch nicht implementiert!"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "Unbekannte Achse: {0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "Unbekannte Match-Operation!"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "Argumentl\u00e4nge beim Test des Knotens processing-instruction() ist nicht korrekt!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "{0} kann nicht in Zahl konvertiert werden"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "{0} kann nicht in NodeList konvertiert werden!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "{0} kann nicht in NodeSetDTM konvertiert werden!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "{0} kann nicht in type//{1} konvertiert werden"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "Muster in getMatchScore erwartet!"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "Variable mit Namen {0} konnte nicht abgerufen werden"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "FEHLER! Unbekannter Opcode: {0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "Zus\u00e4tzliche unzul\u00e4ssige Token: {0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "Literalwert mit falschen Anf\u00fchrungszeichen... doppelte Anf\u00fchrungszeichen erwartet!"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "Literalwert mit falschen Anf\u00fchrungszeichen... einfache Anf\u00fchrungszeichen erwartet!"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "Leerer Ausdruck!"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "{0} erwartet, gefunden: {1}"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "Programmierannahme ist falsch! - {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "Boolesches Argument (...) ist bei Xpath-Draft 19990709 nicht mehr optional."},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "',' gefunden, aber davor kein Argument!"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "',' gefunden, aber danach kein Argument!"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "Syntax '..[predicate]' oder '.[predicate]' nicht zul\u00e4ssig. Verwenden Sie statt dessen 'self::node()[Pr\u00e4dikat]'."},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "Unzul\u00e4ssiger Achsenname: {0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "Unbekannter nodetype: {0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "Musterliteralwert ({0}) muss in Anf\u00fchrungszeichen eingeschlossen werden!"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0} konnte nicht als Zahl formatiert werden!"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "XML TransformerFactory Liaison konnte nicht erstellt werden: {0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "Fehler! 'select'-Ausdruck bei xpath nicht gefunden (-select)."},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "FEHLER! ENDOP nach OP_LOCATIONPATH nicht gefunden"},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "Fehler!"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference f\u00fcr eine Variable au\u00dferhalb des Kontexts oder ohne Definition angegeben!  Name = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "Nur die Achsen child:: und attribute:: sind in Mustern zul\u00e4ssig! Regel verletzende Achse = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() mit falscher Anzahl von Argumenten."},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "Funktion count hat ein Argument!"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "Funktion nicht gefunden: {0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "Codierung nicht unterst\u00fctzt: {0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "Problem bei DTM in getNextSibling... Wiederherstellung wird versucht"},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "Programmierfehler: In EmptyNodeList kann nicht geschrieben werden."},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory wird von XpathContext nicht unterst\u00fctzt!"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "Pr\u00e4fix muss sich in Namensraum aufl\u00f6sen lassen: {0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "Parsen von (InputSource Quelle) in XpathContext nicht unterst\u00fctzt! {0} kann nicht ge\u00f6ffnet werden"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument() in XpathContext nicht unterst\u00fctzt!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "Attribut-Tochterknoten hat kein Eigent\u00fcmer-Dokument!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "Attribut-Tochterknoten hat kein Element Eigent\u00fcmer-Dokument!"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "SAX API-Zeichen (char ch[]... werden vom DTM nicht bearbeitet!"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... wird vom DTM nicht bearbeitet!"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison kann Knoten vom Typ {0} nicht bearbeiten"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper kann Knoten vom Typ {0} nicht bearbeiten"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "Fehler bei DOM2Helper.parse: SystemID - {0} Zeile - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "Fehler bei DOM2Helper.parse"},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "Warnung: Vor einem Dokumentelement kann kein Text ausgegeben werden! Wird ignoriert..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "Ein DOM kann nur einen Stamm haben!"},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Ung\u00fcltiges UTF-16-Surrogat erkannt: {0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "IO-Fehler"},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "URL kann nicht erstellt werden f\u00fcr: {0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+
+  {
+    ER_XPATH_READOBJECT, "In XPath.readObject: {0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "Funktions-Token nicht gefunden."},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "Argument 'localName' ist Null"},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "Bearbeitung nicht m\u00f6glich von XPath vom Typ: {0}"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "Dieses NodeSet ist nicht mutierbar"},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "Dieses NodeSetDTM ist nicht mutierbar"},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "Variable nicht aufl\u00f6sbar: {0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Ung\u00fcltiger Error-Handler"},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "Programmierannahme: Unbekannter Opcode: {0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 oder 1"},
+
+  
+  
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() nicht unterst\u00fctzt von XRTreeFragSelectWrapper"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() nicht unterst\u00fctzt von XRTreeFragSelectWrapper"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb() nicht unterst\u00fctzt von XStringForChars"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "Variable mit Namen {0} kann nicht gefunden werden"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars kann keine Zeichenkette als Argument haben"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "Das FastStringBuffer-Argument darf nicht Null sein"},
+    
+ /* MANTIS_XALAN CHANGE: BEGIN */ 
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+
+
+  {
+    ER_TWO_OR_THREE,
+       "2 oder 3"},
+
+
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "Zugriff auf Variable vor deren Bindung!"},
+
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB darf keine Zeichenkette als Argument \u00fcbergeben werden!"},
+
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! Fehler! Ausgangspunkt f\u00fcr Walker wird auf Null gesetzt!!!"},
+
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "Dieses NodeSetDTM-Element kann nicht zu einem vorausgegangenen Knoten iterieren!"},
+
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "Dieses NodeSet-Element kann nicht zu einem vorausgegangenen Knoten iterieren!"},
+
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "Dieses NodeSetDTM-Element kann keine Indizierung oder Z\u00e4hlung durchf\u00fchren!"},
+
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "Dieses NodeSet-Element kann keine Indizierung oder Z\u00e4hlung durchf\u00fchren!"},
+
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "setShouldCacheNodes kann nicht nach dem Aufruf von nextNode aufgerufen werden!"},
+
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+
+  {
+    ER_ONLY_ALLOWS,
+       "F\u00fcr {0} sind nur {1} Argumente zul\u00e4ssig."},
+
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+
+  {
+    ER_UNKNOWN_STEP,
+       "Programmierannahme in getNextStepPos: unbekannter stepType: {0}"},
+
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "Nach dem Token '/' bzw. '//' wurde ein relativer Pfad zum Speicherort erwartet."},
+
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "Es wurde ein Pfad zum Speicherort erwartet. Vorgefunden wurde jedoch der folgende Token\u003a  {0}"},
+
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "Nach dem Token '/' bzw. '//' wurde ein Schritt zum Speicherort erwartet."},
+
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "Es wurde ein Knotentest erwartet, der entweder NCName:* oder QName entspricht."},
+
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "Es wurde ein Schrittmuster erwartet. Vorgefunden wurde jedoch das Zeichen '/'."},
+
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "Es wurde ein relatives Pfadmuster erwartet."},
+
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "Der lokale Name in QNAME muss einem g\u00fcltigen 'NCName' entsprechen."},
+
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "Das Pr\u00e4fix in QNAME muss einem g\u00fcltigen 'NCName' entsprechen."},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "{0} kann nicht in Datentyp ''boolean'' konvertiert werden."},
+
+
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "{0} kann nicht in einen einzelnen Knoten konvertiert werden. Diese Abruffunktion ist f\u00fcr die Typen ANY_UNORDERED_NODE_TYPE und FIRST_ORDERED_NODE_TYPE bestimmt."},
+
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "Die Snapshot-L\u00e4nge f\u00fcr diesen Typ kann nicht ermittelt werden: {0}. Diese Abruffunktion ist f\u00fcr die Typen UNORDERED_NODE_SNAPSHOT_TYPE und ORDERED_NODE_SNAPSHOT_TYPE bestimmt."},
+
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "Es kann keine Iteration \u00fcber einen nicht-iterativen Typ durchgef\u00fchrt werden: {0}"},
+
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+
+  {
+    ER_DOC_MUTATED,
+       "Das Dokument wurde ge\u00e4ndert, nachdem das Ergebnis zur\u00fcckgegeben wurde. Der Iterator ist ung\u00fcltig."},
+
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "Ung\u00fcltiges XPath-Typargument: {0}"},
+
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "Leeres XPath-Ergebnisobjekt"},
+
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "Der zur\u00fcckgegebene Typ {0} kann nicht in den angegebenen Typ umgewandelt werden: {1}"},
+
+
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+
+  {
+    ER_NULL_RESOLVER,
+       "Pr\u00e4fix kann nicht aufgel\u00f6st werden, wenn Pr\u00e4fix-Resolver Null ist."},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "{0} kann nicht in eine Zeichenkette konvertiert werden."},
+
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "snapshotItem kann nicht f\u00fcr diesen Typ aufgerufen werden: {0}. Diese Methode ist f\u00fcr die Typen UNORDERED_NODE_SNAPSHOT_TYPE und ORDERED_NODE_SNAPSHOT_TYPE bestimmt."},
+
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+
+  {
+    ER_WRONG_DOCUMENT,
+       "Der Kontextknoten geh\u00f6rt nicht zu dem Dokument, das an dieses XPathEvaluator-Element gebunden ist."},
+
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+
+  {
+    ER_WRONG_NODETYPE ,
+       "Der Kontextknotentyp wird nicht unterst\u00fctzt."},
+
+
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+
+  {
+    ER_XPATH_ERROR ,
+       "Unbekannter Fehler in XPath."},
+
+
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "Name von locale in der Funktion format-number noch nicht bearbeitet!"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "XSL Property nicht unterst\u00fctzt: {0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "Zurzeit nichts tun mit Namensraum {0} in Eigenschaft: {1}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "SecurityException beim Versuch des Zugriffs auf XSL-Systemeigenschaft: {0}"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "Alte Syntax: quo(...) ist in XPath nicht mehr definiert."},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath ben\u00f6tigt ein abgeleitetes Objekt zum Implementieren von nodeTest!"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "Funktions-Token nicht gefunden."},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "Funktion nicht gefunden: {0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "URL kann nicht erstellt werden aus: {0}"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "Option -E f\u00fcr DTM-Parser nicht unterst\u00fctzt"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference f\u00fcr Variable au\u00dferhalb des Kontexts oder ohne Definition angegeben!  Name = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    WG_UNSUPPORTED_ENCODING, "Nicht unterst\u00fctzte Codierung: {0}"},
+
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "de"},
+  { "help_language", "de"},
+  { "language", "de"},
+    { "BAD_CODE",
+      "Parameter f\u00fcr createMessage au\u00dferhalb der Grenzwerte"},
+    { "FORMAT_FAILED",
+      "Ausnahme bei Aufruf von messageFormat"},
+    { "version", ">>>>>>> Xalan Version "},
+    { "version2", "<<<<<<<"},
+    { "yes", "ja"},
+    { "line", "Zeile //"},
+    { "column", "Spalte //"},
+    { "xsldone", "XSLProcessor: fertig"},
+    { "xpath_option", "xpath-Optionen: "},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [-select xpath-Ausdruck]"},
+    { "optionMatch", "   [-match Muster (f\u00fcr Trefferdiagnose)]"},
+    { "optionAnyExpr",
+      "Oder irgendein xpath-Ausdruck f\u00fchrt einen Diagnose-Dump aus"},
+    { "noParsermsg1", "XSL Process fehlgeschlagen."},
+    { "noParsermsg2", "** Parser nicht gefunden**"},
+    { "noParsermsg3", "Pr\u00fcfen Sie Ihren classpath."},
+    { "noParsermsg4",
+      "Wenn Sie IBMs XML Parser for Java nicht haben, k\u00f6nnen Sie ihn von folgender Adresse herunterladen"},
+    { "noParsermsg5", "IBMs AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//Fehler";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "Fehler: ";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "Warnung: ";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "MUSTER ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_en.java b/src/org/apache/xpath/res/XPATHErrorResources_en.java
new file mode 100644
index 0000000..801f212
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_en.java
@@ -0,0 +1,67 @@
+/*
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+
+/**
+ * <meta name="usage" content="advanced"/>
+ * Default implementation of XPATHErrorResources.  This is just
+ * an empty class.
+ */
+public class XPATHErrorResources_en extends XPATHErrorResources
+{
+}
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_es.java b/src/org/apache/xpath/res/XPATHErrorResources_es.java
new file mode 100644
index 0000000..27cfd72
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_es.java
@@ -0,0 +1,1376 @@
+/*
+ * @(#)XPATHErrorResources_es.java	1.7 02/03/26
+ *
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_es extends XPATHErrorResources
+{
+
+
+ /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+
+  public static final Object[][] contents = {
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "Esta funci\u00f3n no se permite en un patr\u00f3n de b\u00fasqueda"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "Esta funci\u00f3n no acepta argumentos."},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "la implementaci\u00f3n de la funci\u00f3n del documento() se ha sustituido por org.apache.xalan.xslt.FuncDocument.!"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "el contexto no tiene documento propietario!"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "el nombre local tiene demasiados argumentos."},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "el URI del espacio de nombre tiene demasiados argumentos."},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "el espacio est\u00e1ndar tiene demasiados argumentos."},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "el n\u00famero tiene demasiados argumentos."},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "el nombre tiene demasiados argumentos."},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "la cadena tiene demasiados argumentos."},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "la longitud de la cadena tiene demasiados argumentos."},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "La funci\u00f3n de traducci\u00f3n utiliza tres argumentos!"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "La funci\u00f3n unparsed-entity-uri deber\u00eda utilizar un argumento!"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "no se ha implementado todav\u00eda el eje de espacio de nombre!"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "eje desconocido: {0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "operaci\u00f3n de b\u00fasqueda desconocida!"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "La longitud de los argumentos de la prueba del nodo de instrucci\u00f3n de procesamiento () es incorrecta!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "No se puede convertir {0} en un n\u00famero."},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "No se puede convertir {0} en una NodeList."},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "No se puede convertir {0} en un NodeSetDTM!."},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "No se puede convertir {0} en un tipo//{1}"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "Patr\u00f3n de b\u00fasqueda esperado en getMatchScore!"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "No se ha podido obtener una variable con el nombre {0}"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "ERROR! C\u00f3digo de operaci\u00f3n desconocido: {0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "Tokens adicionales no permitidos: {0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "error de entrecomillado... debe usar comillas dobles!"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "error de entrecomillado... debe usar comillas sencillas!"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "Expresi\u00f3n vac\u00eda!"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "Esperados {0}, pero encontrados: {1}"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "El aserto del programador es incorrecto! - {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "El argumento booleano(...) ya no es opcional con el borrador 19990709 Xpath."},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "Se ha encontrado ',' pero no hay ning\u00fan argumento anterior!"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "Se ha encontrado ',' pero no hay ning\u00fan argumento posterior!"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "La sintaxis '..[predicate]' no es v\u00e1lida.  Sustituir por 'self::node()[predicate]'."},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "nombre de eje no v\u00e1lido: {0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "Tipo de nodo desconocido: {0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "La cadena literal del patr\u00f3 ({0}) requiere entrecomillado!"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "No se ha podido dar formato num\u00e9rico a {0}!"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "No se ha podido crear un v\u00ednculo XML TransformerFactory: {0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "Error! No se ha encontrado la expresi\u00f3n de selecci\u00f3n de xpath (-seleccionar)."},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "ERROR! No se ha podido encontra ENDOP despu\u00e9s de OP_LOCATIONPATH."},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "Se ha producido un error!"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "Referencia variable atribuida a una variable fuera de contexto o sin definici\u00f3n! Nombre = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "S\u00f3lo se permiten los ejes child:: y attribute:: en los patrones de b\u00fasqueda!  Ejes incompatibles = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "El n\u00famero de argumentos de la clave es incorrecto."},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "La funci\u00f3n de c\u00f3mputo deber\u00eda utilizar un argumento!"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "No se ha podido encontrar la funci\u00f3n: {0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "Codificaci\u00f3n no admitida: {0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "Se ha producido un error en DTM en getNextSibling... intentando restablecer."},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "Error del programador: no se puede escribir en EmptyNodeList."},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "XPathContext no admite setDOMFactory!"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "El prefijo debe convertirse en un espacio de nombre: {0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "an\u00e1lisis sint\u00e1ctico (fuente InputSource source) no admitido! No se puede abri {0}"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument no admitido en XPathContext."},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "El atributo hijo no tiene documento propietario!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "El atributo hijo no tiene elemento de documento propietario!"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "Caracteres SAX API no manejados por DTM!"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "Espacio en blanco que puede ignorarse no procesado por DTM!"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison no puede manejar nodos de tipo {0}"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper no puede manejar nodos de tipo {0}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "Error DOM2Helper.parse: ID del sistema - {0} l\u00ednea - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "Error DOM2Helper.parse."},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "Advertencia: no puede enviar el texto antes del elemento de documento. Se ignora..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "No puede haber m\u00e1s de una ra\u00edz en un DOM."},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Se ha detectado un sustituto UTF-16 no v\u00e1lido: {0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "Error de entrada/salida."},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "No se puede crear url para: {0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+  {
+    ER_XPATH_READOBJECT, "En XPath.readObject: {0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "No se ha encontrado el token de funci\u00f3n."},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "El argumentoArgument 'localName' es nulo."},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "No puede manejar el tipo XPath: {0}"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "Este NodeSet es inmutable."},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       " Este NodeSetDTM es inmutable."},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "Variable no convertible: {0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Manejador de errores nulo."},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "Aserto del programador: c\u00f3digo de operaci\u00f3n desconocido: {0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 \u00f3r 1"},
+
+  
+    
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() no admitido por XRTreeFragSelectWrapper"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() no admitido por XRTreeFragSelectWrapper"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb() no admitido para XStringForChars"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "No se ha podido encontrar variable con el nombre {0}"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars no puede utilizar una cadena para un argumento"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "El argumento FastStringBuffer no puede ser nulo"},
+    
+  /* MANTIS_XALAN CHANGE: BEGIN */ 
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+
+
+  {
+    ER_TWO_OR_THREE,
+       "2 o 3"},
+
+
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "Se ha accedido a la variable antes de vincularla!"},
+
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "\u00a1XStringForFSB no puede utilizar una cadena como argumento!"},
+
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! \u00a1Error! Se est\u00e1 estableciendo la ra\u00edz de un walker a nulo"},
+
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "\u00a1Este NodeSetDTM no puede hacer iteraciones a un nodo previo!"},
+
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "\u00a1Este NodeSet no puede hacer iteraciones a un nodo previo!"},
+
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "\u00a1Este NodeSetDTM no puede generar \u00edndices o funciones de contador!"},
+
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "\u00a1Este NodeSet no puede generar \u00edndices ni funciones de contador!"},
+
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+      "No se puede invocar setShouldCacheNodes despu\u00e9s de haber invocado nextNode"},
+
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+
+  {
+    ER_ONLY_ALLOWS,
+       "{0} s\u00f3lo permite {1} argumentos"},
+
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+
+  {
+    ER_UNKNOWN_STEP,
+       "Confirmaci\u00f3n del programador en getNextStepPos: stepType desconocido: {0}"},
+
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "Se esperaba una ruta de destino relativa despu\u00e9s del token '/' o '//'."},
+
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "Se esperaba una ruta de destino, pero se ha encontrado el siguiente token\u003a  {0}"},
+
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "Se esperaba un paso de ubicaci\u00f3n despu\u00e9s de '/' o '//'."},
+
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "Se esperaba una prueba de nodo coincidente con NCName:* o con QName."},
+
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "Se esperaba un patr\u00f3n de pasos, pero se ha encontrado '/' ."},
+
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "Se esperaba un patr\u00f3n de pasos relativo."},
+
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "El nombre local especificado en QNAME debe ser un nombre NCName v\u00e1lido"},
+
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "El prefijo especificado en QNAME debe ser un nombre NCName v\u00e1lido"},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "No se puede convertir {0} en una instancia booleana."},
+
+
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "No se puede convertir {0} en un nodo \u00fanico. Este m\u00e9todo getter se aplica a los tipos ANY_UNORDERED_NODE_TYPE y FIRST_ORDERED_NODE_TYPE."},
+
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "No se puede obtener la longitud de la snapshot del tipo: {0}. Este m\u00e9todo getter se aplica a los tipos UNORDERED_NODE_SNAPSHOT_TYPE y ORDERED_NODE_SNAPSHOT_TYPE."},
+
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "No se puede hacer iteraciones en un tipo que no permite iteraciones: {0}"},
+
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+
+  {
+    ER_DOC_MUTATED,
+       "El documento ha cambiado desde que se envi\u00f3 el resultado. La iteraci\u00f3n no es v\u00e1lida."},
+
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "Argumento de tipo XPath no v\u00e1lido: {0}"},
+
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "Objeto resultado XPath vac\u00edo"},
+
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "El tipo devuelto: {0} no se puede transformar en el tipo especificado: {1}"},
+
+
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+
+  {
+    ER_NULL_RESOLVER,
+       "No se puede resolver el prefijo con un convertidor de prefijo nulo."},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "No se puede convertir {0} en una cadena."},
+
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "No se puede invocar snapshotItem en el tipo: {0}. Este m\u00e9todo se aplica a los tipos UNORDERED_NODE_SNAPSHOT_TYPE y ORDERED_NODE_SNAPSHOT_TYPE."},
+
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+
+  {
+    ER_WRONG_DOCUMENT,
+       "El nodo de contexto no pertenece al documento vinculado a este XPathEvaluator."},
+
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+
+  {
+    ER_WRONG_NODETYPE ,
+       "El tipo de nodo de contexto no es compatible."},
+
+
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+
+  {
+    ER_XPATH_ERROR ,
+       "Error desconocido en XPath."},
+
+
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "No se ha manejado todav\u00eda el nombre locale en la funci\u00f3n!"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+//public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "Propiedad XSL no admitida: {0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "Actualmente el espacio de nombres {0} en propiedad debe dejarse como est\u00e1: {1}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "SecurityException al intentar tener acceso a la propiedad del sistema XSL: {0}"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "Sintaxis antigua: quo(...) ya no viene definida enis XPath"},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath requiere un objeto derivado para ejecutar nodeTest!"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "No se ha encontrado el token de la funci\u00f3n"},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "No se ha podido encontrar la funci\u00f3n: {0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "No se puede crear URL desde: {0}"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "opci\u00f3n -E no admitida para analizador sint\u00e1ctico DTM"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference atribuida a una variable fuera de contexto o sin definici\u00f3n. Nombre = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "Codificaci\u00f3n no admitida: {0}"},
+
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "es"},
+  { "help_language", "es"},
+  { "language", "es"},
+    { "BAD_CODE",
+      "El par\u00e1metro para createMessage estaba fuera de los l\u00edmites"},
+    { "FORMAT_FAILED", "Excepci\u00f3n generada la llamada messageFormat"},
+    { "version", ">>>>>>> Versi\u00f3n Xalan "},
+    { "version2", "<<<<<<<"},
+    { "yes", "s\u00ed"},
+    { "line", "L\u00ednea //"},
+    { "column", "Columna //"},
+    { "xsldone", "XSLProcessor: hecho"},
+    { "xpath_option", "opciones xpath: "},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [- seleccionar expresi\u00f3n xpath]"},
+    { "optionMatch",
+      "   [-match coincidir patr\u00f3n de b\u00fasqueda (para diagn\u00f3sticos de b\u00fasqueda)]"},
+    { "optionAnyExpr",
+      "O una expresi\u00f3n xpath realizar\u00e1 un volcado de diagn\u00f3stico"},
+    { "noParsermsg1", "Ha fallado el proceso XSLl"},
+    { "noParsermsg2", "** No se ha podido encontrar analizador sint\u00e1ctico **"},
+    { "noParsermsg3", "Compruebe el classpath"},
+    { "noParsermsg4",
+      "Si no tiene el analizador sint\u00e1ctico XML para Java de IBM, puede descargarlo desde"},
+    { "noParsermsg5",
+      "AlphaWorks de IBM: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+  "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//error";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "Error: ";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "Advertencia: ";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "PATR\u00d3N ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_fr.java b/src/org/apache/xpath/res/XPATHErrorResources_fr.java
new file mode 100644
index 0000000..8a70f15
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_fr.java
@@ -0,0 +1,1377 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_fr extends XPATHErrorResources
+{
+
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "La fonction current() n\u2019est pas admise dans la correspondance \u00e0 la forme !"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "La fonction current() n\u2019admet pas les arguments !"},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "La mise en oeuvre de la fonction document () a \u00e9t\u00e9 remplac\u00e9e par org.apache.xalan.xslt.FuncDocument!"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "le contexte n\u2019a pas de document propri\u00e9taire !"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() a trop d\u2019arguments."},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() a trop d\u2019arguments."},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() a trop d\u2019arguments."},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() a trop d\u2019arguments."},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name() a trop d\u2019arguments."},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() a trop d\u2019arguments."},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length() a trop d\u2019arguments."},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "La fonction translate() a trois arguments !"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "La fonction unparsed-entity-uri ne peut avoir qu\u2019un seul argument !"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "l'axe namespace n\u2019est pas encore mis en \u0153uvre !"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "axe inconnu : {0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "op\u00e9ration de correspondance inconnue !"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "La longueur d\u2019argument du test du n\u0153ud processing-instruction() n\u2019est pas correcte !"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "Impossible de convertir {0} en fonction number"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "Impossible de convertir {0} en fonction NodeList !"},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "Impossible de convertir {0} en fonction NodeSetDTM !"},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "Impossible de convertir {0} en type//{1}"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "Correspondance \u00e0 la forme attendue dans getMatchScore !"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "Impossible de trouver la variable nomm\u00e9e {0}"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "ERREUR ! Code d\u2019op\u00e9ration inconnu : {0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "Unit\u00e9s lexicales suppl\u00e9mentaires non autoris\u00e9es : {0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "libell\u00e9 mal pr\u00e9sent\u00e9... guillemet attendu !"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "libell\u00e9 mal pr\u00e9sent\u00e9... apostrophe attendue !"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "Expression vide !"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "{0} attendu(e), mais : {1} trouv\u00e9(e)"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "Assertion de programmeur incorrecte ! - {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "L\u2019argument boolean(...) n\u2019est plus facultatif avec la version brouillon 19990709 XPath ."},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "',' trouv\u00e9 sans argument avant !"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "',' trouv\u00e9 sans argument apr\u00e8s !"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predicate]' ou '.[predicate]' constitue une mauvaise syntaxe. Utilisez 'self::node()[predicate]' \u00e0 la place."},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "nom d\u2019axe non autoris\u00e9 : {0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "Type de n\u0153ud inconnu : {0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "Le libell\u00e9 de la forme ({0}) doit \u00eatre entre guillemets !"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0} ne peut pas \u00eatre format\u00e9(e) en number\u00a0!"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "Impossible de cr\u00e9er XML TransformerFactory Liaison : {0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "Erreur ! Impossible de trouver l\u2019expression de s\u00e9lection xpath (-select)."},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "ERREUR ! Impossible de trouver ENDOP apr\u00e8s OP_LOCATIONPATH"},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "Une erreur s\u2019est produite !"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "L''\u00e9l\u00e9ment VariableReference a \u00e9t\u00e9 fourni pour la variable hors contexte ou sans d\u00e9finition !  Nom = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "Seuls les axes child:: et attribute:: sont admis dans les correspondances \u00e0 la forme !  Axes erron\u00e9s = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() dispose d\u2019un nombre incorrect d\u2019arguments."},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "La fonction count ne doit avoir qu\u2019un seul argument !"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "Impossible de trouver la fonction : {0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "Codage non pris en charge : {0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "Un incident s\u2019est produit au niveau de DTM dans getNextSibling... Tentative de r\u00e9cup\u00e9ration"},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "Erreur de programmation : Impossible d\u2019\u00e9crire dans EmptyNodeList."},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory n\u2019est pas pris en charge par XPathContext!"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "Le pr\u00e9fixe doit se r\u00e9soudre en nom d''espace : {0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "parse (source InputSource) non pris en charge dans XpathContext ! Impossible d\u2019ouvrir {0}"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument() non pris en charge dans XpathContext !"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "L\u2019attribut child n\u2019a pas de document propri\u00e9taire !"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "L\u2019attribute child n\u2019a pas d\u2019\u00e9l\u00e9ment de document propri\u00e9taire !"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "Les caract\u00e8res SAX API (char ch[]... ne sont pas pris en charge par DTM !"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... ne sont pas pris en charge par DTM !"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison ne peut pas prendre en charge les n\u0153uds de type {0}"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper ne peut pas prendre en charge les n\u0153uds de type {0}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "Erreur DOM2Helper.parse : ID syst\u00e8me - {0} ligne - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "Erreur DOM2Helper.parse"},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "Attention : impossible de sortir le texte avant l\u2019\u00e9l\u00e9ment document !  Op\u00e9ration ignor\u00e9e ..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "Impossible d\u2019avoir plus d\u2019une racine sur un DOM !"},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Substitut UTF-16 incorrect d\u00e9tect\u00e9 : {0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "Erreur d\u2019E/S"},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "Impossible de cr\u00e9er une url pour : {0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+  {
+    ER_XPATH_READOBJECT, "Dans XPath.readObject : {0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "Unit\u00e9 lexicale function introuvable."},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "L\u2019argument 'localName' est \u00e9gal \u00e0 null"},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "Impossible d\u2019op\u00e9rer avec le type : {0} XPath"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+	
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "Cet \u00e9l\u00e9ment NodeSet n\u2019est pas mutable"},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "Cet \u00e9l\u00e9ment NodeSetDTM n\u2019est pas mutable"},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "Variable non r\u00e9solue : {0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Gestionnaire d\u2019erreur vide"},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "Assertion du programmeur : code op\u00e9ration inconnu : {0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 ou 1"},
+    
+  
+  
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() n\u2019est pas pris en charge par XRTreeFragSelectWrapper"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() n\u2019est pas pris en charge par XRTreeFragSelectWrapper"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb() n\u2019est pas pris en charge pour XStringForChars"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "Impossible de trouver la variable nomm\u00e9e {0}"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars ne peut pas avoir de cha\u00eene comme argument"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "L\u2019argument FastStringBuffer ne peut pas \u00eatre \u00e9gal \u00e0 null"},
+    
+/* MANTIS_XALAN CHANGE: BEGIN */ 
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+
+
+  {
+    ER_TWO_OR_THREE,
+       "2 ou 3"},
+
+
+ /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "Variable acc\u00e9d\u00e9e avant sa limite !"},
+
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB ne peut pas \u00eatre une cha\u00eene pour un argument!"},
+
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! Erreur! Attribution d'une valeur null \u00e0 la racine d'un walker !!!"},
+
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "Ce NodeSetDTM ne peut pas \u00eatre r\u00e9p\u00e9t\u00e9 \u00e0 un noeud pr\u00e9c\u00e9dent !"},
+
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "Ce NodeSet ne peut pas \u00eatre r\u00e9p\u00e9t\u00e9 vers un noeud pr\u00e9c\u00e9dent !"},
+
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "Ce NodeSetDTM ne peut pas ex\u00e9cuter de fonctions d'indexation ou de comptage !"},
+
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "Ce NodeSet ne peut pas ex\u00e9cuter de fonctions d'indexation ou de comptage !"},
+
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "Impossible d'appeler setShouldCacheNodes apr\u00e8s avoir appel\u00e9 nextNode !"},
+
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+
+  {
+    ER_ONLY_ALLOWS,
+       "{0} n''admet que les arguments {1} arguments"},
+
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+
+  {
+    ER_UNKNOWN_STEP,
+       "Assertion du programmeur dans getNextStepPos : stepType inconnu : {0}"},
+
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "Un chemin d'acc\u00e8s relatif \u00e9tait attendu apr\u00e8s le jeton '/' ou '//'."},
+
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "Un chemin d'acc\u00e8s \u00e9tait attendu, mais l'objet suivant a \u00e9t\u00e9 rencontr\u00e9\u003a  {0}"},
+
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "Une \u00e9tape de positionnement \u00e9t\u00e9 attendue \u00e0 la suite de l'objet '/' ou '//'."},
+
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "Un test de noeud correspondant \u00e0 NCName:* ou \u00e0 QName \u00e9tait attendu."},
+
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "Une forme d'\u00e9tape \u00e9tait attendue, mais '/' a \u00e9t\u00e9 rencontr\u00e9."},
+
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+/** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "Une forme de chemin d'acc\u00e8s relatif \u00e9tait attendue."},
+
+
+// Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "Le nom local de QNAME doit \u00eatre un NCName admis"},
+
+  
+// Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "Le pr\u00e9fixe de QNAME doit \u00eatre un NCName admis"},
+
+
+// Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "Impossible de convertir {0} en valeur bool\u00e9enne."},
+
+
+// Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "Impossible de convertir {0} en noeud unique. Cette m\u00e9thode d'obtention s'applique aux  types ANY_UNORDERED_NODE_TYPE et FIRST_ORDERED_NODE_TYPE."},
+
+
+// Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "Impossible d'obtenir une longueur d'instantan\u00e9 du type : {0}. Cette m\u00e9thode d'obtention s'applique aux types UNORDERED_NODE_SNAPSHOT_TYPE et ORDERED_NODE_SNAPSHOT_TYPE."},
+
+  
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "Impossible d'it\u00e9rer sur le type non r\u00e9p\u00e9titeur : {0}"},
+
+
+// Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+
+  {
+    ER_DOC_MUTATED,
+       "Le document a mut\u00e9 depuis que le r\u00e9sultat a \u00e9t\u00e9 renvoy\u00e9. L'it\u00e9rateur est incorrect."},
+
+
+/** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "Argument de type XPath incorrect : {0}"},
+
+
+/** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "Objet de r\u00e9sultat XPath vide"},
+
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "Impossible de forcer le type renvoy\u00e9 : {0} dans le fichier : {1}"},
+
+
+/** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+
+  {
+    ER_NULL_RESOLVER,
+       "Impossible de r\u00e9soudre le pr\u00e9fixe sans d\u00e9composeur de pr\u00e9fixe."},
+
+
+// Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "Impossible de convertir {0} en cha\u00eene ."},
+
+
+// Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "Impossible d'appeler snapshotItem sur le type : {0}. Cette m\u00e9thode s'applique aux types UNORDERED_NODE_SNAPSHOT_TYPE et ORDERED_NODE_SNAPSHOT_TYPE."},
+
+
+// Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+/** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+
+  {
+    ER_WRONG_DOCUMENT,
+       "Le noeud de contexte n'appartient pas au document associ\u00e9 \u00e0 ce XPathEvaluator."},
+
+
+// Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+
+  {
+    ER_WRONG_NODETYPE ,
+       "Le noeud de contexte n'est pas pris en charge."},
+
+
+/** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+
+  {
+    ER_XPATH_ERROR ,
+       "Erreur inconnue dans XPath."},
+
+
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "Le nom de l'environnement local dans la fonction format-number n\u2019est pas encore g\u00e9r\u00e9 !"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "XSL Property non pris en charge : {0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "Ne rien faire pour l\u2019instant avec le nom d''espace {0} dans la propri\u00e9t\u00e9 : {1}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "Interception de SecurityException ors de la tentative d\u2019acc\u00e8s \u00e0 la propri\u00e9t\u00e9 syst\u00e8me XSL : {0}"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "L\u2019ancienne syntaxe: quo(...) n\u2019est plus d\u00e9finie dans XPath."},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath requiert un objet d\u00e9riv\u00e9 pour mettre en oeuvre nodeTest !"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "Unit\u00e9 lexicale function introuvable."},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "Impossible de trouver la fonction : {0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "Impossible de cr\u00e9er une URL \u00e0 partir de : {0}"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "L\u2019option -E n\u2019est pas pris en charge pour l\u2019analyseur syntaxique DTM"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "L''\u00e9l\u00e9ment VariableReference a \u00e9t\u00e9 fourni pour la variable hors contexte ou sans d\u00e9finition !  Nom = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "Codage non pris en charge : {0}"},
+
+
+  // Other miscellaneous text used inside the code...
+
+  { "ui_language", "fr"},
+  { "help_language", "fr"},
+  { "language", "fr"},
+    { "BAD_CODE",
+      "Param\u00e8tre pour createMessage hors limites"},
+    { "FORMAT_FAILED",
+      "Exception \u00e9mise pendant l\u2019appel de messageFormat"},
+    { "version", ">>>>>>> Version Xalan "},
+    { "version2", "<<<<<<<"},
+    { "yes", "oui"},
+    { "line", "Ligne //"},
+    { "column", "Colonne //"},
+    { "xsldone", "XSLProcessor: termin\u00e9"},
+    { "xpath_option", "options xpath : "},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [expression xpath -select]"},
+    { "optionMatch",
+      "   [correspondance \u00e0 la forme -match (pour les diagnostics de correspondance)]"},
+    { "optionAnyExpr",
+      "Ou une expression xpath provoquera un \u00e9chec de diagnostic"},
+    { "noParsermsg1", "Echec de XSL Process."},
+    { "noParsermsg2", "** Impossible de trouver l\u2019analyseur syntaxique**"},
+    { "noParsermsg3", "Veuillez v\u00e9rifier votre chemin de classe."},
+    { "noParsermsg4",
+      "Si vous ne disposez pas de l\u2019analyseur XML d\u2019IBM pour Java, vous pouvez le t\u00e9l\u00e9charger \u00e0 l\u2019adresse suivante"},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//error";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "Erreur : ";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "Attention : ";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "FORME ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_it.java b/src/org/apache/xpath/res/XPATHErrorResources_it.java
new file mode 100644
index 0000000..b3eb23e
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_it.java
@@ -0,0 +1,1399 @@
+/*
+* @(#)XPATHErrorResources_it.java	1.8 02/03/26
+* The Apache Software License, Version 1.1
+*
+*
+* Copyright (c) 1999 The Apache Software Foundation.  All rights 
+* reserved.
+*
+* Redistribution and use in source and binary forms, with or without
+* modification, are permitted provided that the following conditions
+* are met:
+*
+* 1. Redistributions of source code must retain the above copyright
+*    notice, this list of conditions and the following disclaimer. 
+*
+* 2. Redistributions in binary form must reproduce the above copyright
+*    notice, this list of conditions and the following disclaimer in
+*    the documentation and/or other materials provided with the
+*    distribution.
+*
+* 3. The end-user documentation included with the redistribution,
+*    if any, must include the following acknowledgment:  
+*       "This product includes software developed by the
+*        Apache Software Foundation (http://www.apache.org/)."
+*    Alternately, this acknowledgment may appear in the software itself,
+*    if and wherever such third-party acknowledgments normally appear.
+*
+* 4. The names "Xalan" and "Apache Software Foundation" must
+*    not be used to endorse or promote products derived from this
+*    software without prior written permission. For written 
+*    permission, please contact apache@apache.org.
+*
+* 5. Products derived from this software may not be called "Apache",
+*    nor may "Apache" appear in their name, without prior written
+*    permission of the Apache Software Foundation.
+*
+* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+* DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+* SUCH DAMAGE.
+* ====================================================================
+*
+* This software consists of voluntary contributions made by many
+* individuals on behalf of the Apache Software Foundation and was
+* originally based on software copyright (c) 2002, Sun Microsystems,
+* Inc., http://www.sun.com.  For more
+* information on the Apache Software Foundation, please see
+* <http://www.apache.org/>.
+*/
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_it extends XPATHErrorResources
+{
+
+
+ /** Field MAX_CODE          */
+ public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+ /** Field MAX_WARNING          */
+ public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+ /** Field MAX_OTHERS          */
+ public static final int MAX_OTHERS = 20;
+
+ /** Field MAX_MESSAGES          */
+ public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+ // Error messages...
+  public static final Object[][] contents = {
+
+ /** Field ERROR0000          */
+ //public static final int ERROR0000 = 0;
+
+
+ {
+   "ERROR0000", "{0}"},
+
+
+ /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+ //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+ {
+   ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+     "La funzione current() non \u00e8 consentita in un criterio di corrispondenza."},
+
+
+ /** Field ER_CURRENT_TAKES_NO_ARGS          */
+ //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+ {
+   ER_CURRENT_TAKES_NO_ARGS,
+     "La funzione current() non accetta argomenti."},
+
+
+ /** Field ER_DOCUMENT_REPLACED          */
+ //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+ {
+   ER_DOCUMENT_REPLACED,
+     "L'implementazione della funzione document() \u00e8 stata sostituita da org.apache.xalan.xslt.FuncDocument."},
+
+
+ /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+ //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+ {
+   ER_CONTEXT_HAS_NO_OWNERDOC,
+     "Il contesto non ha un documento proprietario."},
+
+
+ /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+ {
+   ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+     "local-name() ha troppi argomenti."},
+
+
+ /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+ {
+   ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+     "namespace-uri() ha troppi argomenti."},
+
+
+ /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+ {
+   ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+     "normalize-space() ha troppi argomenti."},
+
+
+ /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+ {
+   ER_NUMBER_HAS_TOO_MANY_ARGS,
+     "number() ha troppi argomenti."},
+
+
+ /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+ {
+   ER_NAME_HAS_TOO_MANY_ARGS, "name() ha troppi argomenti."},
+
+
+ /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+ {
+   ER_STRING_HAS_TOO_MANY_ARGS,
+     "string() ha troppi argomenti."},
+
+
+ /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+ {
+   ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+     "string-length() ha troppi argomenti."},
+
+
+ /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+ //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+ {
+   ER_TRANSLATE_TAKES_3_ARGS,
+     "La funzione translate() richiede tre argomenti."},
+
+
+ /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+ //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+ {
+   ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+     "La funzione unparsed-entity-uri richiede un argomento."},
+
+
+ /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+ //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+ {
+   ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+     "Asse namespace non ancora implementato."},
+
+
+ /** Field ER_UNKNOWN_AXIS          */
+ //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+ {
+   ER_UNKNOWN_AXIS, "Asse sconosciuto: {0}"},
+
+
+ /** Field ER_UNKNOWN_MATCH_OPERATION          */
+ //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+ {
+   ER_UNKNOWN_MATCH_OPERATION, "Operazione di corrispondenza sconosciuta."},
+
+
+ /** Field ER_INCORRECT_ARG_LENGTH          */
+ //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+ {
+   ER_INCORRECT_ARG_LENGTH,
+     "La lunghezza argomento del test di nodo di processing-instruction() non \u00e8 corretta."},
+
+
+ /** Field ER_CANT_CONVERT_TO_NUMBER          */
+ //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+ {
+   ER_CANT_CONVERT_TO_NUMBER,
+     "Impossibile convertire {0} in un numero."},
+
+
+ /** Field ER_CANT_CONVERT_TO_NODELIST          */
+ //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+ {
+   ER_CANT_CONVERT_TO_NODELIST,
+     "Impossibile convertire {0} in NodeList."},
+
+
+ /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+ //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+ {
+   ER_CANT_CONVERT_TO_MUTABLENODELIST,
+     "Impossibile convertire {0} in NodeSetDTM."},
+
+
+ /** Field ER_CANT_CONVERT_TO_TYPE          */
+ //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+ {
+   ER_CANT_CONVERT_TO_TYPE,
+     "Impossibile convertire {0} in tipo//{1}"},
+
+
+ /** Field ER_EXPECTED_MATCH_PATTERN          */
+ //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+ {
+   ER_EXPECTED_MATCH_PATTERN,
+     "Previsto criterio di corrispondenza in getMatchScore."},
+
+
+ /** Field ER_COULDNOT_GET_VAR_NAMED          */
+ //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+ {
+   ER_COULDNOT_GET_VAR_NAMED,
+     "Impossibile trovare la variabile denominata {0}"},
+
+
+ /** Field ER_UNKNOWN_OPCODE          */
+ //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+ {
+   ER_UNKNOWN_OPCODE, "ERRORE. Codice operativo sconosciuto: {0}"},
+
+
+ /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+ //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+ {
+   ER_EXTRA_ILLEGAL_TOKENS, "Altri token non validi: {0}"},
+
+
+ /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+ //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+ {
+   ER_EXPECTED_DOUBLE_QUOTE,
+     "Letterale non corretto... previste le doppie virgolette."},
+
+
+ /** Field ER_EXPECTED_SINGLE_QUOTE          */
+ //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+ {
+   ER_EXPECTED_SINGLE_QUOTE,
+     "Letterale non corretto... previste le virgolette singole."},
+
+
+ /** Field ER_EMPTY_EXPRESSION          */
+ //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+ {
+   ER_EMPTY_EXPRESSION, "Espressione vuota."},
+
+
+ /** Field ER_EXPECTED_BUT_FOUND          */
+ //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+ {
+   ER_EXPECTED_BUT_FOUND, "Previsto {0}, trovato: {1}"},
+
+
+ /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+ //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+ {
+   ER_INCORRECT_PROGRAMMER_ASSERTION,
+     "L''asserzione di programmazione non \u00e8 corretta. - {0}"},
+
+
+ /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+ //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+ {
+   ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+     "L'argomento booleano(...) non \u00e8 pi\u00f9 opzionale con 19990709 XPath draft."},
+
+
+ /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+ //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+ {
+   ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+     "Trovato ',' ma senza argomento precedente."},
+
+
+ /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+ //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+ {
+   ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+     "Trovato ',' ma senza argomento successivo."},
+
+
+ /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+ //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+ {
+   ER_PREDICATE_ILLEGAL_SYNTAX,
+     "'.. la sintassi [predicato]' o '.[predicato]' non \u00e8 valida. Utilizzare 'self::node()[predicato]'."},
+
+
+ /** Field ER_ILLEGAL_AXIS_NAME          */
+ //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+ {
+   ER_ILLEGAL_AXIS_NAME, "Nome di asse non valido: {0}"},
+
+
+ /** Field ER_UNKNOWN_NODETYPE          */
+ //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+ {
+   ER_UNKNOWN_NODETYPE, "Tipo di nodo sconosciuto: {0}"},
+
+
+ /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+ //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+ {
+   ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+     "Il criterio letterale ({0}) deve essere tra virgolette."},
+
+
+ /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+ //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+ {
+   ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+     "Impossibile formattare {0} in un numero."},
+
+
+ /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+ //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+ {
+   ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+     "Impossibile creare il collegamento XML TransformerFactory: {0}"},
+
+
+ /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+ //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+ {
+   ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+     "Errore. Impossibile trovare l'espressione di selezione xpath (-select)."},
+
+
+ /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+ //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+ {
+   ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+     "ERRORE. Impossibile trovare ENDOP dopo OP_LOCATIONPATH"},
+
+
+ /** Field ER_ERROR_OCCURED          */
+ //public static final int ER_ERROR_OCCURED = 42;
+
+
+ {
+   ER_ERROR_OCCURED, "Errore"},
+
+
+ /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+ //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+ {
+   ER_ILLEGAL_VARIABLE_REFERENCE,
+     "VariableReference fornito per la variabile \u00e8 esterno al contesto o senza definizione.  Nome = {0}"},
+
+
+ /** Field ER_AXES_NOT_ALLOWED          */
+ //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+ {
+   ER_AXES_NOT_ALLOWED,
+     "Nei criteri di corrispondenza sono consentiti solo gli assi child:: e attribute::. Assi non validi = {0}"},
+
+
+ /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+ //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+ {
+   ER_KEY_HAS_TOO_MANY_ARGS,
+     "key() ha un numero di argomenti non valido."},
+
+
+ /** Field ER_COUNT_TAKES_1_ARG          */
+ //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+ {
+   ER_COUNT_TAKES_1_ARG,
+     "La funzione di conteggio deve prendere un argomento."},
+
+
+ /** Field ER_COULDNOT_FIND_FUNCTION          */
+ //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+ {
+   ER_COULDNOT_FIND_FUNCTION, "Impossibile trovare la funzione: {0}"},
+
+
+ /** Field ER_UNSUPPORTED_ENCODING          */
+ //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+ {
+   ER_UNSUPPORTED_ENCODING, "Codifica non supportata: {0}"},
+
+
+ /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+ //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+ {
+   ER_PROBLEM_IN_DTM_NEXTSIBLING,
+     "Problema in DTM in getNextSibling... Tentativo di recupero in corso."},
+
+
+ /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+ //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+ {
+   ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+     "Errore di programmazione: impossibile scrivere in EmptyNodeList."},
+
+
+ /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+ //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+ {
+   ER_SETDOMFACTORY_NOT_SUPPORTED,
+     "setDOMFactory non \u00e8 supportato da XPathContext."},
+
+
+ /** Field ER_PREFIX_MUST_RESOLVE          */
+ //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+ {
+   ER_PREFIX_MUST_RESOLVE,
+     "Il prefisso deve risolvere in namespace: {0}"},
+
+
+ /** Field ER_PARSE_NOT_SUPPORTED          */
+ //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+ {
+   ER_PARSE_NOT_SUPPORTED,
+     "analisi (sorgente InputSource) non supportata in XPathContext. Impossibile aprire {0}"},
+
+
+ /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+ //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+ {
+   ER_CREATEDOCUMENT_NOT_SUPPORTED,
+     "createDocument() non supportato in XPathContext."},
+
+
+ /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+ //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+ {
+   ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+     "L'elemento secondario dell'attributo non ha un documento di propriet\u00e0."},
+
+
+ /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+ //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+ {
+   ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+     "L'elemento secondario dell'attributo non ha un elemento del documento di propriet\u00e0."},
+
+
+ /** Field ER_SAX_API_NOT_HANDLED          */
+ //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+ {
+   ER_SAX_API_NOT_HANDLED,
+     "Caratteri SAX API (char ch[]... non gestiti da DTM."},
+
+
+ /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+ //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+ {
+   ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+     "ignorableWhitespace(char ch[]... non \u00e8 gestito da DTM."},
+
+
+ /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+ //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+ {
+   ER_DTM_CANNOT_HANDLE_NODES,
+     "DTMLiaison non pu\u00f2 gestire nodi di tipo {0}"},
+
+
+ /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+ //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+ {
+   ER_XERCES_CANNOT_HANDLE_NODES,
+     "DOM2Helper non pu\u00f2 gestire nodi di tipo {0}"},
+
+
+ /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+ //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+ {
+   ER_XERCES_PARSE_ERROR_DETAILS,
+     "Errore DOM2Helper.parse: SystemID - {0} linea - {1}"},
+
+
+ /** Field ER_XERCES_PARSE_ERROR          */
+ //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+ {
+   ER_XERCES_PARSE_ERROR, "Errore DOM2Helper.parse"},
+
+
+ /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+ //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+ {
+   ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+     "Avvertenza: impossibile generare un output di testo prima dell'elemento documento. Richiesta ignorata..."},
+
+
+ /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+ //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+ {
+   ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+     "Impossibile avere pi\u00f9 di una root su un DOM."},
+
+
+ /** Field ER_INVALID_UTF16_SURROGATE          */
+ //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+ {
+   ER_INVALID_UTF16_SURROGATE,
+     "Rilevato surrogato di UTF-16 non valido: {0} ?"},
+
+
+ /** Field ER_OIERROR          */
+ //public static final int ER_OIERROR = 66;
+
+
+ {
+   ER_OIERROR, "Errore IO"},
+
+
+ /** Field ER_CANNOT_CREATE_URL          */
+ //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+ {
+   ER_CANNOT_CREATE_URL, "Impossibile creare URL per: {0}"},
+
+
+ /** Field ER_XPATH_READOBJECT          */
+ //public static final int ER_XPATH_READOBJECT = 68;
+
+
+ {
+   ER_XPATH_READOBJECT, "In XPath.readObject: {0}"},
+
+ 
+ /** Field ER_XPATH_READOBJECT         */
+ //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+ {
+   ER_FUNCTION_TOKEN_NOT_FOUND,
+     "token di funzione non trovato."},
+
+ 
+  /**  Argument 'localName' is null  */
+ //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+ {
+   ER_ARG_LOCALNAME_NULL,
+      "L'argomento 'localName' \u00e8 nullo"},
+
+ 
+  /**  Can not deal with XPath type:   */
+ //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+ {
+   ER_CANNOT_DEAL_XPATH_TYPE,
+      "Impossibile gestire il tipo XPath: {0}"},
+
+ 
+  /**  This NodeSet is not mutable  */
+ //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+ {
+   ER_NODESET_NOT_MUTABLE,
+      "Questo NodeSet non \u00e8 mutabile"},
+
+ 
+  /**  This NodeSetDTM is not mutable  */
+ //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+ {
+   ER_NODESETDTM_NOT_MUTABLE,
+      "Questo NodeSetDTM non \u00e8 mutabile"},
+
+ 
+  /**  Variable not resolvable:   */
+ //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+ {
+   ER_VAR_NOT_RESOLVABLE,
+       "Variabile non risolvibile: {0}"},
+
+ 
+  /** Null error handler  */
+ //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+ {
+   ER_NULL_ERROR_HANDLER,
+       "Errore gestore nullo"},
+
+ 
+  /**  Programmer's assertion: unknown opcode  */
+ //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+ {
+   ER_PROG_ASSERT_UNKNOWN_OPCODE,
+      "Asserzione di programmazione: codice operativo sconosciuto: {0}"},
+
+ 
+  /**  0 or 1   */
+ //public static final int ER_ZERO_OR_ONE = 77;
+
+
+ {
+   ER_ZERO_OR_ONE,
+      "0 o 1"},
+
+ 
+ 
+  /**  rtf() not supported by XRTreeFragSelectWrapper   */
+ //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+ {
+   ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+      "rtf() non supportato da XRTreeFragSelectWrapper"},
+
+ 
+  /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+ //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+ {
+   ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+      "asNodeIterator() non supportato da XRTreeFragSelectWrapper"},
+
+ 
+  /**  fsb() not supported for XStringForChars   */
+ //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+ {
+   ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+      "fsb() non supportato per XStringForChars"},
+
+ 
+  /**  Could not find variable with the name of   */
+ //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+ {
+   ER_COULD_NOT_FIND_VAR,
+     "Impossibile trovare la variabile denominata {0}"},
+
+ 
+  /**  XStringForChars can not take a string for an argument   */
+ //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+ {
+   ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+     "XStringForChars non pu\u00f2 prendere una stringa per un argomento"},
+
+ 
+  /**  The FastStringBuffer argument can not be null   */
+ //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+ {
+   ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+     "L'argomento FastStringBuffer non pu\u00f2 essere nullo"},
+   
+    /**  2 or 3   */
+   //public static final int ER_TWO_OR_THREE = 84;
+ 
+ 
+   {
+     ER_TWO_OR_THREE,
+        "2 o 3"},
+  
+ 
+    /** Variable accessed before it is bound! */
+   //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+ 
+ 
+   {
+     ER_VARIABLE_ACCESSED_BEFORE_BIND,
+        "Accesso alla variabile prima della delimitazione."},
+  
+ 
+    /** XStringForFSB can not take a string for an argument! */
+   //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+ 
+ 
+   {
+     ER_FSB_CANNOT_TAKE_STRING,
+        "XStringForFSB non pu\u00f2 avere una stringa per argomento."},
+  
+ 
+    /** Error! Setting the root of a walker to null! */
+   //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+ 
+ 
+   {
+     ER_SETTING_WALKER_ROOT_TO_NULL,
+        "\n !!!! Errore! Impostazione radice walker a zero."},
+  
+ 
+    /** This NodeSetDTM can not iterate to a previous node! */
+   //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+ 
+ 
+   {
+     ER_NODESETDTM_CANNOT_ITERATE,
+        "Questo NodeSetDTM non \u00e8 in grado di eseguire iterazione in un nodo precedente."},
+  
+ 
+   /** This NodeSet can not iterate to a previous node! */
+   //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+ 
+ 
+   {
+     ER_NODESET_CANNOT_ITERATE,
+        "Questo NodeSet non \u00e8 in grado di eseguire iterazione in un nodo precedente."},
+  
+ 
+   /** This NodeSetDTM can not do indexing or counting functions! */
+   //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+ 
+ 
+   {
+     ER_NODESETDTM_CANNOT_INDEX,
+        "Questo NodeSetDTM non \u00e8 in grado di indicizzare o calcolare le funzioni."},
+  
+ 
+   /** This NodeSet can not do indexing or counting functions! */
+   //public static final int ER_NODESET_CANNOT_INDEX = 91;
+ 
+ 
+   {
+     ER_NODESET_CANNOT_INDEX,
+        "Questo NodeSet non \u00e8 in grado di indicizzare o calcolare le funzioni."},
+  
+ 
+   /** Can not call setShouldCacheNodes after nextNode has been called! */
+   //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+ 
+ 
+   {
+     ER_CANNOT_CALL_SETSHOULDCACHENODE,
+        "Impossibile richiamare setShouldCacheNodes dopo aver richiamato nextNode."},
+  
+ 
+   /** {0} only allows {1} arguments */
+   //public static final int ER_ONLY_ALLOWS = 93;
+ 
+ 
+   {
+     ER_ONLY_ALLOWS,
+        "{0} consente solo argomenti {1}"},
+  
+ 
+   /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+   //public static final int ER_UNKNOWN_STEP = 94;
+ 
+ 
+   {
+     ER_UNKNOWN_STEP,
+        "Conferma del programmatore in getNextStepPos: stepType sconosciuto: {0}"},
+  
+ 
+   //Note to translators:  A relative location path is a form of XPath expression.
+   // The message indicates that such an expression was expected following the
+   // characters '/' or '//', but was not found.
+ 
+   /** Problem with RelativeLocationPath */
+   //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+ 
+ 
+   {
+     ER_EXPECTED_REL_LOC_PATH,
+        "Atteso percorso ubicazione relativo dopo il token '/' o '//'."},
+  
+ 
+   // Note to translators:  A location path is a form of XPath expression.
+   // The message indicates that syntactically such an expression was expected,but
+   // the characters specified by the substitution text were encountered instead.
+ 
+   /** Problem with LocationPath */
+   //public static final int ER_EXPECTED_LOC_PATH = 96;
+ 
+ 
+   {
+     ER_EXPECTED_LOC_PATH,
+        "Atteso percorso ubicazione, ma \u00e8 stato incontrato il token seguente\u003a  {0}"},
+  
+ 
+   // Note to translators:  A location step is part of an XPath expression.
+   // The message indicates that syntactically such an expression was expected
+   // following the specified characters.
+ 
+   /** Problem with Step */
+   //public static final int ER_EXPECTED_LOC_STEP = 97;
+ 
+ 
+   {
+     ER_EXPECTED_LOC_STEP,
+        "Atteso step ubicazione dopo il token '/' o '//'."},
+  
+ 
+   // Note to translators:  A node test is part of an XPath expression that is
+   // used to test for particular kinds of nodes.  In this case, a node test that
+   // consists of an NCName followed by a colon and an asterisk or that consists
+   // of a QName was expected, but was not found.
+ 
+   /** Problem with NodeTest */
+   //public static final int ER_EXPECTED_NODE_TEST = 98;
+ 
+ 
+   {
+     ER_EXPECTED_NODE_TEST,
+        "Atteso test nodo corrispondente a NCName:* o QName."},
+  
+ 
+   // Note to translators:  A step pattern is part of an XPath expression.
+   // The message indicates that syntactically such an expression was expected,
+   // but the specified character was found in the expression instead.
+ 
+   /** Expected step pattern */
+   //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+ 
+ 
+   {
+     ER_EXPECTED_STEP_PATTERN,
+        "Atteso pattern step, ma \u00e8 stato incontrato '/'."},
+  
+ 
+   // Note to translators: A relative path pattern is part of an XPath expression.
+   // The message indicates that syntactically such an expression was expected,
+   // but was not found.
+  
+   /** Expected relative path pattern */
+   //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+ 
+ 
+   {
+     ER_EXPECTED_REL_PATH_PATTERN,
+        "Atteso pattern percorso relativo."},
+  
+
+   // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+   // The localname is the portion after the optional colon; the message indicates
+   // that there is a problem with that part of the QNAME.
+ 
+   /** localname in QNAME should be a valid NCName */
+   //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+ 
+ 
+   {
+     ER_ARG_LOCALNAME_INVALID,
+        "Localname in QNAME deve essere un NCName valido"},
+  
+   
+   // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+   // The prefix is the portion before the optional colon; the message indicates
+   // that there is a problem with that part of the QNAME.
+ 
+   /** prefix in QNAME should be a valid NCName */
+   //public static final int ER_ARG_PREFIX_INVALID = 102;
+ 
+ 
+   {
+     ER_ARG_PREFIX_INVALID,
+        "Prefisso in QNAME deve essere un NCName valido"},
+  
+ 
+   // Note to translators:  The substitution text is the name of a data type.  The
+   // message indicates that a value of a particular type could not be converted
+   // to a value of type string.
+ 
+   /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+   //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+ 
+ 
+   {
+     ER_CANT_CONVERT_TO_BOOLEAN,
+        "Impossibile convertire {0} in booleano."},
+  
+ 
+   // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+   // FIRST_ORDERED_NODE_TYPE.
+ 
+   /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+   //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+ 
+ 
+   {
+     ER_CANT_CONVERT_TO_SINGLENODE,
+        "Impossibile convertire {0} in nodo singolo. Questo getter si applica ai tipi ANY_UNORDERED_NODE_TYPE e FIRST_ORDERED_NODE_TYPE."},
+  
+ 
+   // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+   // ORDERED_NODE_SNAPSHOT_TYPE.
+ 
+   /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+   //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+ 
+ 
+   {
+     ER_CANT_GET_SNAPSHOT_LENGTH,
+        "Impossibile recuperare lunghezza snapshot in tipo: {0}. Questo getter si applica ai tipi UNORDERED_NODE_SNAPSHOT_TYPE e ORDERED_NODE_SNAPSHOT_TYPE."},
+  
+ 
+   /** Field ER_NON_ITERATOR_TYPE                */
+   //public static final int ER_NON_ITERATOR_TYPE        = 106;
+ 
+ 
+   {
+     ER_NON_ITERATOR_TYPE,
+        "Impossibile eseguire iterazione su tipo non iterativo: {0}"},
+  
+ 
+   // Note to translators: This message indicates that the document being operated
+   // upon changed, so the iterator object that was being used to traverse the
+   // document has now become invalid.
+ 
+   /** Field ER_DOC_MUTATED                      */
+   //public static final int ER_DOC_MUTATED              = 107;
+ 
+ 
+   {
+     ER_DOC_MUTATED,
+        "Documento modificato dalla restituzione del risultato. Iteratore non valido."},
+  
+ 
+   /** Field ER_INVALID_XPATH_TYPE               */
+   //public static final int ER_INVALID_XPATH_TYPE       = 108;
+ 
+ 
+   {
+     ER_INVALID_XPATH_TYPE,
+        "Argomento tipo XPath non valido: {0}"},
+  
+ 
+   /** Field ER_EMPTY_XPATH_RESULT                */
+   //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+ 
+ 
+   {
+     ER_EMPTY_XPATH_RESULT,
+        "Oggetto risultato XPath vuoto"},
+  
+ 
+   /** Field ER_INCOMPATIBLE_TYPES                */
+   //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+ 
+ 
+   {
+     ER_INCOMPATIBLE_TYPES,
+        "Il tipo restituito: {0} non pu\u00f2 essere forzato nel tipo specificato: {1}"},
+  
+ 
+   /** Field ER_NULL_RESOLVER                     */
+   //public static final int ER_NULL_RESOLVER            = 111;
+ 
+ 
+   {
+     ER_NULL_RESOLVER,
+        "Impossibile risolvere il prefisso con risolutore prefisso nullo."},
+  
+ 
+   // Note to translators:  The substitution text is the name of a data type.  The
+   // message indicates that a value of a particular type could not be converted
+   // to a value of type string.
+ 
+   /** Field ER_CANT_CONVERT_TO_STRING            */
+   //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+ 
+ 
+   {
+     ER_CANT_CONVERT_TO_STRING,
+        "Impossibile convertire {0} in stringa."},
+  
+ 
+   // Note to translators: Do not translate snapshotItem,
+   // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+ 
+   /** Field ER_NON_SNAPSHOT_TYPE                 */
+   //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+ 
+ 
+   {
+     ER_NON_SNAPSHOT_TYPE,
+        "Impossibile richiamare snapshotItem su tipo: {0}. Questo metodo \u00e8 valido per i tipi UNORDERED_NODE_SNAPSHOT_TYPE e ORDERED_NODE_SNAPSHOT_TYPE."},
+  
+ 
+   // Note to translators:  XPathEvaluator is a Java interface name.  An
+   // XPathEvaluator is created with respect to a particular XML document, and in
+   // this case the expression represented by this object was being evaluated with
+   // respect to a context node from a different document.
+ 
+   /** Field ER_WRONG_DOCUMENT                    */
+   //public static final int ER_WRONG_DOCUMENT          = 114;
+ 
+ 
+   {
+     ER_WRONG_DOCUMENT,
+        "Il nodo contesto non appartiene al documento collegato a questo XPathEvaluator."},
+  
+ 
+   // Note to translators:  The XPath expression cannot be evaluated with respect
+   // to this type of node.
+   /** Field ER_WRONG_NODETYPE                    */
+   //public static final int ER_WRONG_NODETYPE          = 115;
+ 
+ 
+   {
+     ER_WRONG_NODETYPE ,
+        "Il tipo di nodo contesto non \u00e8 supportato."},
+  
+ 
+   /** Field ER_XPATH_ERROR                       */
+   //public static final int ER_XPATH_ERROR             = 116;
+ 
+ 
+   {
+     ER_XPATH_ERROR ,
+        "Errore sconosciuto in XPath."},
+  
+ 
+ 
+   // Warnings...
+
+ /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+ //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+ {
+   WG_LOCALE_NAME_NOT_HANDLED,
+     "Il nome locale nella funzione format-number non \u00e8 ancora gestito."},
+
+
+ /** Field WG_PROPERTY_NOT_SUPPORTED          */
+ //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+ {
+   WG_PROPERTY_NOT_SUPPORTED,
+     "Propriet\u00e0 XSL non supportata: {0}"},
+
+
+ /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+ //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+ {
+   WG_DONT_DO_ANYTHING_WITH_NS,
+     "Nulla da fare correntemente con namespace {0} in propriet\u00e0: {1}"},
+
+
+ /** Field WG_SECURITY_EXCEPTION          */
+ //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+ {
+   WG_SECURITY_EXCEPTION,
+     "Generata SecurityException al tentativo di accedere alle propriet\u00e0 di sistema XSL: {0}"},
+
+
+ /** Field WG_QUO_NO_LONGER_DEFINED          */
+ //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+ {
+   WG_QUO_NO_LONGER_DEFINED,
+     "Sintassi precedente: quo(...) non \u00e8 pi\u00f9 definita in XPath."},
+
+
+ /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+ //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+ {
+   WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+     "XPath deve avere un oggetto derivato per implementare nodeTest."},
+
+
+ /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+ //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+ {
+   WG_FUNCTION_TOKEN_NOT_FOUND,
+     "Token di funzione non trovato."},
+
+
+ /** Field WG_COULDNOT_FIND_FUNCTION          */
+ //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+ {
+   WG_COULDNOT_FIND_FUNCTION,
+     "Impossibile trovare la funzione: {0}"},
+
+
+ /** Field WG_CANNOT_MAKE_URL_FROM          */
+ //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+ {
+   WG_CANNOT_MAKE_URL_FROM,
+     "Impossibile creare un URL da: {0}"},
+
+
+ /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+ //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+ {
+   WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+     "L'opzione -E non \u00e8 supportata per il parser DTM"},
+
+
+ /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+ //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+ {
+   WG_ILLEGAL_VARIABLE_REFERENCE,
+     "VariableReference fornita per la variabile \u00e8 esterna al contesto o senza definizione.  Nome = {0}"},
+
+
+ /** Field WG_UNSUPPORTED_ENCODING          */
+ //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+ {
+   WG_UNSUPPORTED_ENCODING, "Codifica non supportata: {0}"},
+
+
+ // Other miscellaneous text used inside the code...
+
+ { "ui_language", "it"},
+ { "help_language", "it"},
+ { "language", "it"},
+   { "BAD_CODE",
+     "Il parametro di createMessage \u00e8 esterno ai limiti"},
+   { "FORMAT_FAILED",
+     "Eccezione generata durante la chiamata di messageFormat"},
+   { "version", ">>>>>>> Xalan Versione "},
+   { "version2", "<<<<<<<"},
+   { "yes", "s\u00ec"},
+   { "line", "Linea //"},
+   { "column", "Colonna //"},
+   { "xsldone", "XSLProcessor: done"},
+   { "xpath_option", "xpath options: "},
+   { "optionIN", "   [-in inputXMLURL]"},
+   { "optionSelect", "   [-select espressione xpath]"},
+   { "optionMatch",
+     "   [-match match pattern (per la diagnostica di corrispondenza)]"},
+   { "optionAnyExpr",
+     "O solo un'espressione xpath per eseguire un dump di diagnostica"},
+   { "noParsermsg1", "Processo XSL non riuscito."},
+   { "noParsermsg2", "** Impossibile trovare il parser **"},
+   { "noParsermsg3", "Verificare il classpath."},
+   { "noParsermsg4",
+     "Se non si dispone del parser XML IBM per Java, scaricarlo da"},
+   { "noParsermsg5",
+     "AlphaWorks IBM: http://www.alphaworks.ibm.com/formula/xml"}
+ };
+
+ // ================= INFRASTRUCTURE ======================
+
+ /** Field BAD_CODE          */
+ public static final String BAD_CODE = "BAD_CODE";
+
+ /** Field FORMAT_FAILED          */
+ public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+ /** Field ERROR_RESOURCES          */
+ public static final String ERROR_RESOURCES =
+   "org.apache.xpath.res.XPATHErrorResources";
+
+ /** Field ERROR_STRING          */
+ public static final String ERROR_STRING = "//errore";
+
+ /** Field ERROR_HEADER          */
+ public static final String ERROR_HEADER = "Errore: ";
+
+ /** Field WARNING_HEADER          */
+ public static final String WARNING_HEADER = "Avvertenza: ";
+
+ /** Field XSL_HEADER          */
+ public static final String XSL_HEADER = "XSL ";
+
+ /** Field XML_HEADER          */
+ public static final String XML_HEADER = "XML ";
+
+ /** Field QUERY_HEADER          */
+ public static final String QUERY_HEADER = "PATTERN ";
+
+ /**
+  * Get the association list.
+  *
+  * @return The association list.
+  */
+ public Object[][] getContents()
+ {
+   return contents;
+ }
+
+
+  /**
+   * Return the resource file suffic for the indicated locale
+   * For most locales, this will be based the language code.  However
+   * for Chinese, we do distinguish between Taiwan and PRC
+   *
+   * @param locale the locale
+   * @return an String suffix which canbe appended to a resource name
+   */
+  private static final String getResourceSuffix(Locale locale)
+  {
+
+    String suffix = "_" + locale.getLanguage();
+    String country = locale.getCountry();
+
+    if (country.equals("TW"))
+      suffix += "_" + country;
+
+    return suffix;
+  }
+
+
+}
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_ja.java b/src/org/apache/xpath/res/XPATHErrorResources_ja.java
new file mode 100644
index 0000000..b0f3a6a
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_ja.java
@@ -0,0 +1,1476 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_ja extends XPATHErrorResources
+{
+
+
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "current() \u95a2\u6570\u306f\u4e00\u81f4\u30d1\u30bf\u30fc\u30f3\u3067\u8a31\u53ef\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "The current() function is not allowed in a match pattern!"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "current() \u95a2\u6570\u306f\u5f15\u6570\u3092\u53d7\u3051\u5165\u308c\u307e\u305b\u3093\u3002"},
+//      "The current() function does not accept arguments!"},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "document() \u95a2\u6570\u5b9f\u88c5\u306f org.apache.xalan.xslt.FuncDocument \u306b\u7f6e\u304d\u63db\u3048\u3089\u308c\u307e\u3057\u305f\u3002"},
+//      "document() function implementation has been replaced by org.apache.xalan.xslt.FuncDocument!"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u6240\u6709\u8005\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4fdd\u6301\u3057\u307e\u305b\u3093\u3002"},
+//      "context does not have an owner document!"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//      "local-name() has too many arguments."},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//      "namespace-uri() has too many arguments."},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//      "normalize-space() has too many arguments."},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//      "number() has too many arguments."},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//    ER_NAME_HAS_TOO_MANY_ARGS, "name() has too many arguments."},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//      "string() has too many arguments."},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length() \u306e\u5f15\u6570\u304c\u591a\u3059\u304e\u307e\u3059\u3002"},
+//      "string-length() has too many arguments."},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "translate() \u95a2\u6570\u306b 3 \u3064\u306e\u5f15\u6570\u304c\u6307\u5b9a\u3055\u308c\u3066\u3044\u307e\u3059\u3002"},
+//      "The translate() function takes three arguments!"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "unparsed-entity-uri \u95a2\u6570\u306f\u5f15\u6570\u3092 1 \u3064\u3060\u3051\u4f7f\u7528\u3067\u304d\u307e\u3059\u3002"},
+//      "The unparsed-entity-uri function should take one argument!"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "\u540d\u524d\u7a7a\u9593\u8ef8\u306f\u307e\u3060\u5b9f\u88c5\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "namespace axis not implemented yet!"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "\u672a\u77e5\u306e\u8ef8: {0}"},
+//    ER_UNKNOWN_AXIS, "unknown axis: {0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "\u672a\u77e5\u306e\u7167\u5408\u30aa\u30da\u30ec\u30fc\u30b7\u30e7\u30f3\u3067\u3059\u3002"},
+//    ER_UNKNOWN_MATCH_OPERATION, "unknown match operation!"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "processing-instruction() \u30ce\u30fc\u30c9\u30c6\u30b9\u30c8\u306e\u5f15\u6570\u306e\u9577\u3055\u304c\u4e0d\u6b63\u3067\u3059\u3002"},
+//      "Arg length of processing-instruction() node test is incorrect!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "{0} \u3092\u6570\u5b57\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093"},
+//      "Can not convert {0} to a number"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "{0} \u3092 NodeList \u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can not convert {0} to a NodeList!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "{0} \u3092 NodeSetDTM \u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can not convert {0} to a NodeSetDTM!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "{0} \u3092 type//{1} \u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093"},
+//      "Can not convert {0} to a type//{1}"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "getMatchScore \u306b\u4e88\u671f\u3055\u308c\u308b\u4e00\u81f4\u30d1\u30bf\u30fc\u30f3\u3067\u3059\u3002"},
+//      "Expected match pattern in getMatchScore!"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "{0} \u3068\u3044\u3046\u540d\u524d\u306e\u5909\u6570\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f"},
+//      "Could not get variable named {0}"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "\u30a8\u30e9\u30fc\u3002\u672a\u77e5\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9: {0}"},
+//    ER_UNKNOWN_OPCODE, ERROR! Unknown op code: {0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "\u4f59\u5206\u306a\u4e0d\u6b63\u30c8\u30fc\u30af\u30f3: {0}"},
+//    ER_EXTRA_ILLEGAL_TOKENS, "Extra illegal tokens: {0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "\u30ea\u30c6\u30e9\u30eb\u306e\u5f15\u7528\u7b26\u304c\u8aa4\u308a\u3067\u3059... \u4e8c\u91cd\u5f15\u7528\u7b26\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+//      "misquoted literal... expected double quote!"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "\u30ea\u30c6\u30e9\u30eb\u306e\u5f15\u7528\u7b26\u304c\u8aa4\u308a\u3067\u3059... \u5358\u4e00\u5f15\u7528\u7b26\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+//      "misquoted literal... expected single quote!"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "\u5f0f\u304c\u7a7a\u3067\u3059\u3002"},
+//    ER_EMPTY_EXPRESSION, "Empty expression!"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "{0} \u304c\u4e88\u671f\u3055\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u3001{1} \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002"},
+//    ER_EXPECTED_BUT_FOUND, "Expected {0}, but found: {1}"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "\u30d7\u30ed\u30b0\u30e9\u30de\u306e\u8868\u660e\u304c\u4e0d\u6b63\u3067\u3059\u3002 - {0}"},
+//      "Programmer assertion is incorrect! - {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "19990709 XPath \u30c9\u30e9\u30d5\u30c8\u306b\u3064\u3044\u3066\u3001boolean(...) \u5f15\u6570\u306f\u3082\u3046\u4efb\u610f\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "boolean(...) argument is no longer optional with 19990709 XPath draft."},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "',' \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u304c\u3001\u305d\u306e\u524d\u306b\u5f15\u6570\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "Found ',' but no preceding argument!"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "',' \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u304c\u3001\u305d\u308c\u306b\u7d9a\u304f\u5f15\u6570\u304c\u3042\u308a\u307e\u305b\u3093\u3002"},
+//      "Found ',' but no following argument!"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predicate]' \u307e\u305f\u306f '.[predicate]' \u306f\u4e0d\u5f53\u306a\u69cb\u6587\u3067\u3059\u3002\u4ee3\u308f\u308a\u306b 'self::node()[predicate]' \u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
+//      "'..[predicate]' or '.[predicate]' is illegal syntax.  Use 'self::node()[predicate]' instead."},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "\u4e0d\u5f53\u306a\u8ef8\u540d: {0}"},
+//    ER_ILLEGAL_AXIS_NAME, "illegal axis name: {0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "\u672a\u77e5\u306e\u30ce\u30fc\u30c9\u30bf\u30a4\u30d7: {0}"},
+//    ER_UNKNOWN_NODETYPE, "Unknown nodetype: {0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "\u30ea\u30c6\u30e9\u30eb ({0}) \u30d1\u30bf\u30fc\u30f3\u306f\u3001\u5f15\u7528\u7b26\u3067\u56f2\u3080\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002"},
+//      "Pattern literal ({0}) needs to be quoted!"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0} \u306f\u6570\u5b57\u306b\u66f8\u5f0f\u8a2d\u5b9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//      "{0} could not be formatted to a number!"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "XML TransformerFactory Liaison \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f: {0}"},
+//      "Could not create XML TransformerFactory Liaison: {0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "\u30a8\u30e9\u30fc\u3002xpath \u9078\u629e\u5f0f (-select) \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//      "Error! Did not find xpath select expression (-select)."},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "\u30a8\u30e9\u30fc\u3002OP_LOCATIONPATH \u306e\u5f8c\u306b ENDOP \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//      ERROR! Could not find ENDOP after OP_LOCATIONPATH"},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002"},
+//    ER_ERROR_OCCURED, "Error occured!"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u5916\u3067\u3001\u307e\u305f\u306f\u5b9a\u7fa9\u306a\u3057\u3067 VariableReference \u304c\u5909\u6570\u306b\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002Name = {0}"},
+//      "VariableReference given for variable out of context or without definition!  Name = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "\u4e00\u81f4\u30d1\u30bf\u30fc\u30f3\u306b\u306f\u3001child:: \u304a\u3088\u3073 attribute:: \u8ef8\u3060\u3051\u304c\u8a31\u53ef\u3055\u308c\u307e\u3059\u3002\u8a31\u53ef\u3055\u308c\u306a\u3044\u8ef8 = {0}"},
+//      "Only child:: and attribute:: axes are allowed in match patterns!  Offending axes = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() \u306e\u5f15\u6570\u306e\u6570\u304c\u4e0d\u6b63\u3067\u3059\u3002"},
+//      "key() has an incorrect number of arguments."},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "count \u95a2\u6570\u306b\u4f7f\u7528\u3067\u304d\u308b\u5f15\u6570\u306f 1 \u3064\u3067\u3059\u3002"},
+//      "The count function should take one argument!"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "\u95a2\u6570 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//    ER_COULDNOT_FIND_FUNCTION, "Could not find function: {0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0: {0}"},
+//    ER_UNSUPPORTED_ENCODING, "Unsupported encoding: {0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "getNextSibling \u306e DTM \u306b\u554f\u984c\u304c\u767a\u751f\u3057\u307e\u3057\u305f... \u5fa9\u5143\u3057\u3066\u3044\u307e\u3059"},
+//      "Problem occured in DTM in getNextSibling... trying to recover"},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "\u30d7\u30ed\u30b0\u30e9\u30de\u30a8\u30e9\u30fc: EmptyNodeList \u306b\u66f8\u304d\u8fbc\u307f\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Programmer error: EmptyNodeList can not be written to."},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory \u306f XPathContext \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "setDOMFactory is not supported by XPathContext!"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\u63a5\u982d\u8f9e\u306f\u540d\u524d\u7a7a\u9593\u306b\u5909\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059: {0}"},
+//      "Prefix must resolve to a namespace: {0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "\u69cb\u6587\u89e3\u6790 (InputSource \u30bd\u30fc\u30b9) \u306f XPathContext \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002{0} \u3092\u30aa\u30fc\u30d7\u30f3\u3067\u304d\u307e\u305b\u3093"},
+//      "parse (InputSource source) not supported in XPathContext! Can not open {0}"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument() \u306f XPathContext \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "createDocument() not supported in XPathContext!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "\u5c5e\u6027 child \u306f\u6240\u6709\u8005\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u4fdd\u6301\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "Attribute child does not have an owner document!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "\u5c5e\u6027 child \u306f\u6240\u6709\u8005\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u8981\u7d20\u3092\u4fdd\u6301\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "Attribute child does not have an owner document element!"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "SAX API characters(char ch[]... \u306f DTM \u3067\u51e6\u7406\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "SAX API characters(char ch[]... not handled by the DTM!"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... \u306f DTM \u3067\u51e6\u7406\u3055\u308c\u307e\u305b\u3093\u3002"},
+//      "ignorableWhitespace(char ch[]... not handled by the DTM!"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison \u306f\u30bf\u30a4\u30d7 {0} \u306e\u30ce\u30fc\u30c9\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093"},
+//      "DTMLiaison can not handle nodes of type {0}"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper \u306f\u30bf\u30a4\u30d7 {0} \u306e\u30ce\u30fc\u30c9\u3092\u51e6\u7406\u3067\u304d\u307e\u305b\u3093"},
+//      "DOM2Helper can not handle nodes of type {0}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "DOM2Helper.parse \u30a8\u30e9\u30fc: SystemID - {0} \u884c\u756a\u53f7 - {1}"},
+//      "DOM2Helper.parse error: SystemID - {0} line - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "DOM2Helper.parse \u30a8\u30e9\u30fc"},
+//    ER_XERCES_PARSE_ERROR, "DOM2Helper.parse error"},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "\u8b66\u544a: \u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u8981\u7d20\u3088\u308a\u524d\u306b\u30c6\u30ad\u30b9\u30c8\u3092\u51fa\u529b\u3067\u304d\u307e\u305b\u3093\u3002\u7121\u8996\u3057\u307e\u3059..."},
+//      "Warning: can't output text before document element!  Ignoring..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "DOM \u306b\u306f\u8907\u6570\u306e\u30eb\u30fc\u30c8\u3092\u4fdd\u6301\u3067\u304d\u307e\u305b\u3093\u3002"},
+//      "Can't have more than one root on a DOM!"},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\u7121\u52b9\u306a UTF-16 \u4ee3\u7406\u304c\u691c\u51fa\u3055\u308c\u307e\u3057\u305f: {0} ?"},
+//      "Invalid UTF-16 surrogate detected: {0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "\u5165\u51fa\u529b\u30a8\u30e9\u30fc"},
+//    ER_OIERROR, "IO error"},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "{0} \u306e URL \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093"},
+//    ER_CANNOT_CREATE_URL, "Cannot create url for: {0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+  {
+    ER_XPATH_READOBJECT, "XPath.readObject \u306b\u3042\u308a\u307e\u3059: {0}"},
+//    ER_XPATH_READOBJECT, "In XPath.readObject: {0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "\u95a2\u6570\u30c8\u30fc\u30af\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
+//      "function token not found."},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "\u5f15\u6570 'localName' \u304c null \u3067\u3059"},
+//       "Argument 'localName' is null"},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "XPath \u30bf\u30a4\u30d7 {0} \u306f\u51e6\u7406\u3067\u304d\u307e\u305b\u3093"},
+//       "Can not deal with XPath type: {0}"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "\u3053\u306e NodeSet \u306f\u53ef\u5909\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
+//       "This NodeSet is not mutable"},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "\u3053\u306e NodeSetDTM \u306f\u53ef\u5909\u3067\u306f\u3042\u308a\u307e\u305b\u3093"},
+//       "This NodeSetDTM is not mutable"},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "\u89e3\u6c7a\u3067\u304d\u306a\u3044\u5909\u6570: {0}"},
+//        "Variable not resolvable: {0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "null \u30a8\u30e9\u30fc\u30cf\u30f3\u30c9\u30e9"},
+//        "Null error handler"},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "\u30d7\u30ed\u30b0\u30e9\u30de\u306e\u8868\u660e: \u672a\u77e5\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u30b3\u30fc\u30c9: {0}"},
+//       "Programmer's assertion: unknown opcode: {0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 \u307e\u305f\u306f 1"},
+//       "0 or 1"},
+
+  
+  
+  
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() \u306f XRTreeFragSelectWrapper \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "rtf() not supported by XRTreeFragSelectWrapper"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() \u306f XRTreeFragSelectWrapper \u3067\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "asNodeIterator() not supported by XRTreeFragSelectWrapper"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "XStringForChars \u306b fsb() \u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//       "fsb() not supported for XStringForChars"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "{0} \u3068\u3044\u3046\u540d\u524d\u306e\u5909\u6570\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f"},
+//      "Could not find variable with the name of {0}"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars \u306f\u5f15\u6570\u306b\u6587\u5b57\u5217\u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093"},
+//      "XStringForChars can not take a string for an argument"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "FastStringBuffer \u5f15\u6570\u306f null \u306b\u3067\u304d\u307e\u305b\u3093"},
+//      "The FastStringBuffer argument can not be null"},
+    
+  
+  /* MANTIS_XALAN CHANGE: BEGIN */ 
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+
+
+  {
+    ER_TWO_OR_THREE,
+       "\u25bc2 \u307e\u305f\u306f 3"},
+
+
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "\u25bc\u30d0\u30a4\u30f3\u30c9\u524d\u306e\u5909\u6570\u306b\u30a2\u30af\u30bb\u30b9\u3057\u307e\u3057\u305f!"},
+
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "\u25bcXStringForFSB \u306e\u5f15\u6570\u306b\u306f\u6587\u5b57\u5217\u3092\u6307\u5b9a\u3067\u304d\u307e\u305b\u3093!"},
+
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\u25bc\n !!!! \u30a8\u30e9\u30fc! walker \u306e\u30eb\u30fc\u30c8\u306e\u8a2d\u5b9a\u3092 null \u306b\u3057\u3066\u304f\u3060\u3055\u3044!!!"},
+
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "\u25bc\u3053\u306e NodeSetDTM \u306f\u524d\u306e\u30ce\u30fc\u30c9\u306b\u5bfe\u3057\u3066\u7e70\u308a\u8fd4\u3057\u51e6\u7406\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093!"},
+
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "\u25bc\u3053\u306e NodeSet \u306f\u524d\u306e\u30ce\u30fc\u30c9\u306b\u5bfe\u3057\u3066\u7e70\u308a\u8fd4\u3057\u51e6\u7406\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093!"},
+
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "\u25bc\u3053\u306e NodeSetDTM \u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u51e6\u7406\u307e\u305f\u306f\u30ab\u30a6\u30f3\u30c8\u51e6\u7406\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093!"},
+
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "\u25bc\u3053\u306e NodeSet \u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u51e6\u7406\u307e\u305f\u306f\u30ab\u30a6\u30f3\u30c8\u51e6\u7406\u3092\u5b9f\u884c\u3067\u304d\u307e\u305b\u3093!"},
+
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "\u25bcnextNode \u3092\u547c\u3073\u51fa\u3057\u305f\u5f8c\u3067 setShouldCacheNodes \u3092\u547c\u3073\u51fa\u3059\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093!"},
+
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+
+  {
+    ER_ONLY_ALLOWS,
+       "\u25bc{0} \u3067\u8a31\u3055\u308c\u308b\u5f15\u6570\u306f {1} \u3060\u3051\u3067\u3059"},
+
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+
+  {
+    ER_UNKNOWN_STEP,
+       "\u25bcgetNextStepPos \u306b\u304a\u3051\u308b\u30d7\u30ed\u30b0\u30e9\u30de\u306e\u8868\u660e: \u672a\u77e5\u306e stepType: {0}"},
+
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "\u25bc\u30c8\u30fc\u30af\u30f3 '/' \u307e\u305f\u306f '//' \u306e\u5f8c\u306b\u7d9a\u304f\u3079\u304d\u76f8\u5bfe\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093"},
+
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "\u25bc\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30d1\u30b9\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b\u6b21\u306e\u30c8\u30fc\u30af\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u003a  {0}"},
+
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "\u25bc\u30c8\u30fc\u30af\u30f3 '/' \u307e\u305f\u306f '//' \u306e\u5f8c\u306b\u7d9a\u304f\u3079\u304d\u30ed\u30b1\u30fc\u30b7\u30e7\u30f3\u30b9\u30c6\u30c3\u30d7\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
+
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "\u25bcNCName:* \u307e\u305f\u306f QName \u306e\u5f62\u5f0f\u306b\u4e00\u81f4\u3059\u308b\u30ce\u30fc\u30c9\u30c6\u30b9\u30c8\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
+
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "\u25bc\u30b9\u30c6\u30c3\u30d7\u30d1\u30bf\u30fc\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u4ee3\u308f\u308a\u306b '/' \u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\u3002"},
+
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "\u25bc\u76f8\u5bfe\u30d1\u30b9\u30d1\u30bf\u30fc\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
+
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "\u25bcQNAME \u5185\u306e\u30ed\u30fc\u30ab\u30eb\u540d\u306f\u6709\u52b9\u306a NCName \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"},
+
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "\u25bcQNAME \u5185\u306e\u63a5\u982d\u8f9e\u306f\u6709\u52b9\u306a NCName \u3067\u306a\u3051\u308c\u3070\u306a\u308a\u307e\u305b\u3093"},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "\u25bc{0} \u3092 boolean \u5024\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002"},
+
+
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "\u25bc{0} \u3092\u5358\u4e00\u306e\u30ce\u30fc\u30c9\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u53d6\u5f97\u30e1\u30bd\u30c3\u30c9\u3092\u9069\u7528\u3067\u304d\u308b\u578b\u306f\u3001ANY_UNORDERED_NODE_TYPE \u3068 FIRST_ORDERED_NODE_TYPE \u3067\u3059\u3002"},
+
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "\u25bc\u578b {0} \u306e\u30b9\u30ca\u30c3\u30d7\u30b7\u30e7\u30c3\u30c8\u9577\u3092\u53d6\u5f97\u3067\u304d\u307e\u305b\u3093\u3002\u3053\u306e\u53d6\u5f97\u30e1\u30bd\u30c3\u30c9\u3092\u9069\u7528\u3067\u304d\u308b\u578b\u306f\u3001UNORDERED_NODE_SNAPSHOT_TYPE \u3068 ORDERED_NODE_SNAPSHOT_TYPE \u3067\u3059\u3002"},
+
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "\u25bc\u975e iterator \u578b {0} \u306b\u5bfe\u3057\u3066\u7e70\u308a\u8fd4\u3057\u51e6\u7406\u3092\u5b9f\u884c\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093"},
+
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+
+  {
+    ER_DOC_MUTATED,
+       "\u25bc\u7d50\u679c\u304c\u8fd4\u3055\u308c\u305f\u5f8c\u306b\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u304c\u5909\u66f4\u3055\u308c\u305f\u305f\u3081\u3001\u73fe\u5728\u306e\u53cd\u5fa9\u5b50\u306f\u7121\u52b9\u306b\u306a\u308a\u307e\u3057\u305f\u3002"},
+
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "\u25bc\u7121\u52b9\u306a XPath \u578b\u306e\u5f15\u6570: {0}"},
+
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "\u25bc\u7a7a\u306e XPath \u7d50\u679c\u30aa\u30d6\u30b8\u30a7\u30af\u30c8"},
+
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "\u25bc\u623b\u308a\u5024\u306e\u578b {0} \u306f\u6307\u5b9a\u3055\u308c\u305f\u578b {1} \u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093"},
+
+
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+
+  {
+    ER_NULL_RESOLVER,
+       "\u25bc\u63a5\u982d\u8f9e\u30ea\u30be\u30eb\u30d0\u304c null \u3067\u3042\u3063\u305f\u305f\u3081\u3001\u63a5\u982d\u8f9e\u306e\u89e3\u6c7a\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002"},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "\u25bc{0} \u3092\u6587\u5b57\u5217\u5024\u306b\u5909\u63db\u3067\u304d\u307e\u305b\u3093\u3002"},
+
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "\u25bc\u578b {0} \u306e snapshotItem \u3092\u547c\u3073\u51fa\u305b\u307e\u305b\u3093\u3002\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u305b\u308b\u578b\u306f\u3001UNORDERED_NODE_SNAPSHOT_TYPE \u3068 ORDERED_NODE_SNAPSHOT_TYPE \u3067\u3059\u3002"},
+
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+
+  {
+    ER_WRONG_DOCUMENT,
+       "\u25bc\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30ce\u30fc\u30c9\u304c\u3001\u3053\u306e XPathEvaluator \u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u305f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u6240\u5c5e\u3057\u3066\u3044\u307e\u305b\u3093\u3002"},
+
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+
+  {
+    ER_WRONG_NODETYPE ,
+       "\u25bc\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30ce\u30fc\u30c9\u578b\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+
+
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+
+  {
+    ER_XPATH_ERROR ,
+       "\u25bcXPath \u5185\u306b\u304a\u3051\u308b\u672a\u77e5\u306e\u30a8\u30e9\u30fc"},
+
+ 
+
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "format-number \u95a2\u6570\u3067\u30ed\u30b1\u30fc\u30eb\u540d\u306f\u307e\u3060\u51e6\u7406\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "locale name in the format-number function not yet handled!"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "XSL \u30d7\u30ed\u30d1\u30c6\u30a3\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093: {0}"},
+//      "XSL Property not supported: {0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "\u540d\u524d\u7a7a\u9593 {0} \u306e\u30d7\u30ed\u30d1\u30c6\u30a3 {1} \u306b\u306f\u73fe\u5728\u4f55\u3082\u884c\u306a\u3063\u3066\u306f\u306a\u308a\u307e\u305b\u3093"},
+//      "Do not currently do anything with namespace {0} in property: {1}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "XSL \u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30d1\u30c6\u30a3\u306b\u30a2\u30af\u30bb\u30b9\u3057\u3088\u3046\u3068\u3057\u305f\u3068\u304d\u306b SecurityException \u304c\u767a\u751f\u3057\u307e\u3057\u305f: {0}"},
+//      "SecurityException when trying to access XSL system property: {0}"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "\u53e4\u3044\u69cb\u6587: quo(...) \u306f XPath \u3067\u306f\u3082\u3046\u5b9a\u7fa9\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002"},
+//      "Old syntax: quo(...) is no longer defined in XPath."},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath \u306f nodeTest \u3092\u5b9f\u88c5\u3059\u308b\u305f\u3081\u306b\u62bd\u51fa\u3055\u308c\u305f\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u304c\u5fc5\u8981\u3067\u3059\u3002"},
+//      "XPath needs a derived object to implement nodeTest!"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "\u95a2\u6570\u30c8\u30fc\u30af\u30f3\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002"},
+//      "function token not found."},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "\u95a2\u6570 {0} \u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+//      "Could not find function: {0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "\u3053\u3053\u304b\u3089 URL \u3092\u4f5c\u6210\u3067\u304d\u307e\u305b\u3093: {0}"},
+//      "Can not make URL from: {0}"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "DTM \u30d1\u30fc\u30b5\u3067 -E \u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093"},
+//      "-E option not supported for DTM parser"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306e\u5916\u3067\u3001\u307e\u305f\u306f\u5b9a\u7fa9\u306a\u3057\u3067\u3001\u5909\u6570\u306b VariableReference \u304c\u6307\u5b9a\u3055\u308c\u307e\u3057\u305f\u3002Name = {0}"},
+//      "VariableReference given for variable out of context or without definition!  Name = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    WG_UNSUPPORTED_ENCODING, "\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0: {0}"},
+//    WG_UNSUPPORTED_ENCODING, "Unsupported encoding: {0}"},
+
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "ja"},
+  { "help_language", "ja"},
+  { "language", "ja"},
+    { "BAD_CODE",
+      "createMessage \u306e\u30d1\u30e9\u30e1\u30fc\u30bf\u304c\u7bc4\u56f2\u5916\u3067\u3057\u305f"},
+    { "FORMAT_FAILED",
+      "messageFormat \u547c\u3073\u51fa\u3057\u4e2d\u306b\u4f8b\u5916\u304c\u30b9\u30ed\u30fc\u3055\u308c\u307e\u3057\u305f"},
+    { "version", ">>>>>>> Xalan \u30d0\u30fc\u30b8\u30e7\u30f3 "},
+    { "version2", "<<<<<<<"},
+    { "yes", "\u306f\u3044"},
+    { "line", "\u884c\u756a\u53f7 //"},
+    { "column", "\u5217\u756a\u53f7 //"},
+    { "xsldone", "XSLProcessor: \u7d42\u4e86"},
+    { "xpath_option", "xpath \u30aa\u30d7\u30b7\u30e7\u30f3: "},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [-select xpath \u5f0f]"},
+    { "optionMatch",
+      "   [-match \u4e00\u81f4\u30d1\u30bf\u30fc\u30f3 (\u7167\u5408\u8a3a\u65ad\u7528)]"},
+    { "optionAnyExpr",
+      "\u3082\u3057\u304f\u306f\u3001\u305f\u3060 xpath \u5f0f\u304c\u8a3a\u65ad\u7528\u30c0\u30f3\u30d7\u3092\u884c\u3046\u306e\u307f"},
+    { "noParsermsg1",
+    "XSL \u30d7\u30ed\u30bb\u30b9\u306f\u6210\u529f\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u3002"},
+    { "noParsermsg2",
+    "** \u30d1\u30fc\u30b5\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f **"},
+    { "noParsermsg3",
+    "\u30af\u30e9\u30b9\u30d1\u30b9\u3092\u30c1\u30a7\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"},
+    { "noParsermsg4",
+      "Java \u7528\u306b IBM \u306e XML \u30d1\u30fc\u30b5\u3092\u5099\u3048\u3066\u3044\u306a\u3044\u5834\u5408\u306f\u3001\u3053\u308c\u3092\u4ee5\u4e0b\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059\u3002"},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//error";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "Error: ";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "Warning: ";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_ko.java b/src/org/apache/xpath/res/XPATHErrorResources_ko.java
new file mode 100644
index 0000000..eda19ed
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_ko.java
@@ -0,0 +1,1380 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_ko extends XPATHErrorResources
+{
+
+
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+ 
+  {
+    "ERROR0000", "{0}"},
+ 
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+ 
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "current() \ud568\uc218\ub294 \uc77c\uce58 \ud328\ud134\uc5d0 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+ 
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "current() \ud568\uc218\uc5d0\ub294 \uc778\uc790\uac00 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+ 
+  {
+    ER_DOCUMENT_REPLACED,
+      "document() \ud568\uc218 \uad6c\ud604\uc740 org.apache.xalan.xslt.FuncDocument\ub85c \ub300\uccb4\ub418\uc5c8\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+ 
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "\ucee8\ud14d\uc2a4\ud2b8\uc5d0 \uc18c\uc720\uc790 \ubb38\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+ 
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+ 
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+ 
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+ 
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+ 
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+ 
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+ 
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length()\uc758 \uc778\uc790\uac00 \ub108\ubb34 \ub9ce\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+ 
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "translate() \ud568\uc218\uc5d0\ub294 \uc138 \uac1c\uc758 \uc778\uc790\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+ 
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "unparsed-entity-uri \ud568\uc218\ub294 \ud558\ub098\uc758 \uc778\uc790\ub9cc\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+ 
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "\uc774\ub984 \uacf5\uac04 \ucd95\uc774 \uc544\uc9c1 \uad6c\ud604\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+ 
+  {
+    ER_UNKNOWN_AXIS, "{0}\uc740(\ub294) \uc54c \uc218 \uc5c6\ub294 \ucd95\uc785\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+ 
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "\uc54c \uc218 \uc5c6\ub294 \uc77c\uce58 \uc5f0\uc0b0\uc785\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+ 
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "processing-instruction() \ub178\ub4dc \uac80\uc0ac\uc758 \uc778\uc790 \uae38\uc774\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "{0}\uc744(\ub97c) \uc22b\uc790\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "{0}\uc744(\ub97c) NodeList\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "{0}\uc744(\ub97c) NodeSetDTM\uc73c\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "{0}\uc744(\ub97c) type//{1}(\uc73c)\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
+ 
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+ 
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "getMatchScore\uc5d0 \uc77c\uce58 \ud328\ud134\uc774 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+ 
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "{0} \ubcc0\uc218\ub97c \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
+ 
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+ 
+  {
+    ER_UNKNOWN_OPCODE, "\uc624\ub958! \uc54c \uc218 \uc5c6\ub294 \uc5f0\uc0b0 \ucf54\ub4dc: {0}"},
+ 
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+ 
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "\uc798\ubabb\ub41c \ud1a0\ud070: {0}"},
+ 
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+ 
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "\ub9ac\ud130\ub7f4\uc758 \uc778\uc6a9\ubd80\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4... \ud070\ub530\uc634\ud45c\uac00 \ub098\uc640\uc57c \ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+ 
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "\ub9ac\ud130\ub7f4\uc758 \uc778\uc6a9\ubd80\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4... \ub2e8\uc77c \uc778\uc6a9\ubd80\ud638\uac00 \ub098\uc640\uc57c \ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+ 
+  {
+    ER_EMPTY_EXPRESSION, "\ud45c\ud604\uc2dd\uc774 \ube44\uc5b4 \uc788\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+ 
+  {
+    ER_EXPECTED_BUT_FOUND, "{0}\uc744(\ub97c) \uc608\uc0c1\ud588\uc9c0\ub9cc {1}\uc744(\ub97c) \ucc3e\uc558\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+ 
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "\ud504\ub85c\uadf8\ub798\uba38 \uba85\uc81c\uac00 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! - {0}"},
+ 
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+ 
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "\ubd80\uc6b8(...) \uc778\uc790\ub294 19990709 XPath \ub4dc\ub798\ud504\ud2b8\uc640 \ud568\uaed8 \ub354 \uc774\uc0c1 \uc120\ud0dd \uc778\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+ 
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "','\ub97c \ucc3e\uc558\uc73c\ub098 \uc120\ud589 \uc778\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+ 
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "','\ub97c \ucc3e\uc558\uc73c\ub098 \ud6c4\ubbf8 \uc778\uc790\uac00 \uc544\ub2d9\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+ 
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predicate]' \ub610\ub294 '.[predicate]'\ub294 \uc798\ubabb\ub41c \uad6c\ubb38\uc785\ub2c8\ub2e4. \ub300\uc2e0 'self::node()[predicate]'\uc744 \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624. "},
+ 
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+ 
+  {
+    ER_ILLEGAL_AXIS_NAME, "\uc798\ubabb\ub41c \ucd95 \uc774\ub984: {0}"},
+ 
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+ 
+  {
+    ER_UNKNOWN_NODETYPE, "\uc54c \uc218 \uc5c6\ub294 \ub178\ub4dc \uc720\ud615: {0}"},
+ 
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+ 
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "\ud328\ud134 \ub9ac\ud130\ub7f4({0})\uc5d0 \uc778\uc6a9\ubd80\ud638\uac00 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+ 
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0}\uc744(\ub97c) \uc22b\uc790\ub85c \ud3ec\ub9f7\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+ 
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "XML TransformerFactory Liaison {0}\uc744(\ub97c) \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+ 
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "\uc624\ub958! xpath \uc120\ud0dd \ud45c\ud604\uc2dd(-select)\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+ 
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "\uc624\ub958! OP_LOCATIONPATH \ub2e4\uc74c\uc5d0 ENDOP\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.   "},
+ 
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+ 
+  {
+    ER_ERROR_OCCURED, "\uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+ 
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference\uac00 \ucee8\ud14d\uc2a4\ud2b8\ub97c \ubc97\uc5b4\ub0ac\uac70\ub098 \uc815\uc758\ub418\uc9c0 \uc54a\uc740 \ubcc0\uc218\uc5d0 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4! \uc774\ub984 = {0}"},
+ 
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+ 
+  {
+    ER_AXES_NOT_ALLOWED,
+      "\uc77c\uce58 \ud328\ud134\uc5d0\uc11c\ub294 \ud558\ub098\uc758 child:: \ubc0f attribute:: \ucd95\uc774 \ud5c8\uc6a9\ub429\ub2c8\ub2e4. \uc704\ubc18 \ucd95 = {0}"},
+ 
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+ 
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key()\uc758 \uc778\uc790 \uc218\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+ 
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "\uce74\uc6b4\ud2b8 \ud568\uc218\ub294 \ud558\ub098\uc758 \uc778\uc790\ub9cc\uc744 \uc0ac\uc6a9\ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+ 
+  {
+    ER_COULDNOT_FIND_FUNCTION, "\ud568\uc218 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+ 
+  {
+    ER_UNSUPPORTED_ENCODING, "\uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \ucf54\ub4dc\ud654: {0}"},
+ 
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+ 
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "getNextSibling\uc758 DTM\uc5d0 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4... \ubcf5\uad6c\ub97c \uc2dc\ub3c4 \uc911\uc785\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+ 
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "\ud504\ub85c\uadf8\ub798\uba38 \uc624\ub958: EmptyNodeList\uc5d0\ub294 \uc4f8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+ 
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory\ub294 XPathContext\uc5d0\uc11c \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+ 
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\uc811\ub450\uc5b4\uac00 \uc774\ub984 \uacf5\uac04 {0}\uc73c\ub85c(\ub85c) \uacb0\uc815\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+ 
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "\uad6c\ubb38 \ubd84\uc11d(InputSource \uc18c\uc2a4)\uc740 XPathContext\uc5d0\uc11c \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4! {0}\uc744(\ub97c) \uc5f4 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.  "},
+ 
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+ 
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument()\ub294 XPathContext\uc5d0\uc11c \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+ 
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "\uc790\uc2dd \uc18d\uc131\uc5d0 \uc18c\uc720\uc790 \ubb38\uc11c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+ 
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "\uc790\uc2dd \uc18d\uc131\uc5d0 \uc18c\uc720\uc790 \ubb38\uc11c \uc694\uc18c\uac00 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+ 
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "SAX API \ubb38\uc790(char ch[]...\ub294 DTM\uc5d0 \uc758\ud574 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+ 
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]...\ub294 DTM\uc5d0 \uc758\ud574 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+ 
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison\uc740 {0} \uc720\ud615\uc758 \ub178\ub4dc\ub97c \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. "},
+ 
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+ 
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper\ub294 {0} \uc720\ud615\uc758 \ub178\ub4dc\ub97c \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.   "},
+ 
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+ 
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "DOM2Helper.parse \uc624\ub958: SystemID - {0} \ud589 - {1}"},
+ 
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+ 
+  {
+    ER_XERCES_PARSE_ERROR, "DOM2Helper.parse \uc624\ub958"},
+ 
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+ 
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "\uacbd\uace0: \ubb38\uc11c \uc694\uc18c \uc804\uc5d0 \ud14d\uc2a4\ud2b8\ub97c \ucd9c\ub825\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4! \ubb34\uc2dc\ub429\ub2c8\ub2e4..."},
+ 
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+ 
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "DOM\uc5d0 \ub450 \uac1c \uc774\uc0c1\uc758 \ub8e8\ud2b8\ub97c \uac00\uc9c8 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+ 
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\uc798\ubabb\ub41c UTF-16 \ub300\ub9ac\uac00 \uac10\uc9c0\ub418\uc5c8\uc2b5\ub2c8\ub2e4: {0} ?"},
+ 
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+ 
+  {
+    ER_OIERROR, "IO \uc624\ub958"},
+ 
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+ 
+  {
+    ER_CANNOT_CREATE_URL, "{0}\uc5d0 \ub300\ud55c url\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.     "},
+ 
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+ 
+  {
+    ER_XPATH_READOBJECT, "XPath.readObject\uc5d0: {0}"},
+ 
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+ 
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "\uae30\ub2a5 \ud1a0\ud070\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+ 
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "'localName' \uc778\uc790\uac00 \ub110\uc785\ub2c8\ub2e4"},
+ 
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+ 
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "XPath \uc720\ud615\uc744 \ucc98\ub9ac\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}    "},
+ 
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+ 
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "NodeSet\uc740 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+ 
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+ 
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "NodeSetDTM\uc740 \ubcc0\uacbd\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4"},
+ 
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+ 
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "\ubcc0\uc218\ub97c \uacb0\uc815\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {0}"},
+ 
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+ 
+  {
+    ER_NULL_ERROR_HANDLER,
+        "\uc624\ub958 \ucc98\ub9ac\uae30\uac00 \ub110\uc785\ub2c8\ub2e4"},
+ 
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+ 
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "\ud504\ub85c\uadf8\ub798\uba38 \uba85\uc81c: \uc54c \uc218 \uc5c6\ub294 opcode: {0}"},
+ 
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+ 
+  {
+    ER_ZERO_OR_ONE,
+       "0 \ub610\ub294 1"},
+ 
+  
+ 
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+ 
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "XRTreeFragSelectWrapper\uac00 rtf()\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4"},
+ 
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+ 
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "XRTreeFragSelectWrapper\uac00 asNodeIterator()\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4"},
+ 
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+ 
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb()\uac00 XStringForChars\uc5d0 \ub300\ud574 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4"},
+ 
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+ 
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "\uc774\ub984\uc774 {0}\uc778 \ubcc0\uc218\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.   "},
+ 
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+ 
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars\uac00 \uc778\uc790\uc5d0 \ub300\ud55c \ubb38\uc790\uc5f4\uc744 \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+ 
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "FastStringBuffer \uc778\uc790\ub294 \ub110\uc774 \ub420 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+    
+  /* MANTIS_XALAN CHANGE: BEGIN */ 
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+
+ 
+  {
+    ER_TWO_OR_THREE,
+       "2 \ub610\ub294 3"},
+ 
+
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+
+ 
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "\ubcc0\uc218\uac00 \ubc14\uc6b4\ub529\ub418\uae30 \uc804\uc5d0 \uc561\uc138\uc2a4\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+ 
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+ 
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB\uac00 \uc778\uc790\uc5d0 \ub300\ud55c \ubb38\uc790\uc5f4\uc744 \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+ 
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! \uc624\ub958! walker\uc758 \ub8e8\ud2b8\ub97c \ub110\ub85c \uc124\uc815\ud588\uc2b5\ub2c8\ub2e4!!!"},
+ 
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+ 
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "\uc774 NodeSetDTM\uc774 \uc774\uc804 \ub178\ub4dc\ub85c \ubc18\ubcf5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+ 
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "\uc774 NodeSet\uc774 \uc774\uc804 \ub178\ub4dc\ub85c \ubc18\ubcf5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+ 
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "\uc774 NodeSetDTM\uc774 \uc778\ub371\uc2a4 \ub610\ub294 \uce74\uc6b4\ud305 \uae30\ub2a5\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+ 
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "\uc774 NodeSet\uc774 \uc778\ub371\uc2a4 \ub610\ub294 \uce74\uc6b4\ud305 \uae30\ub2a5\uc744 \uc218\ud589\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+ 
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "nextNode\uac00 \ud638\ucd9c\ub41c \ub2e4\uc74c\uc5d0 setShouldCacheNodeshas\ub97c \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4!"},
+ 
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+ 
+  {
+    ER_ONLY_ALLOWS,
+       "{0}\uc740(\ub294) {1} \uc778\uc790\ub9cc \ud5c8\uc6a9\ud569\ub2c8\ub2e4."},
+ 
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+ 
+  {
+    ER_UNKNOWN_STEP,
+       "getNextStepPos\uc5d0\uc11c \ud504\ub85c\uadf8\ub798\uba38 \uba85\uc81c: \uc54c \uc218 \uc5c6\ub294 stepType: {0}"},
+ 
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+ 
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "\uc0c1\ub300 \uc704\uce58 \uacbd\ub85c\ub294 '/' \ub610\ub294 '//' \ub4a4\uc5d0 \ub098\uc640\uc57c \ud569\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+ 
+  {
+    ER_EXPECTED_LOC_PATH,
+       "\uc0c1\ub300 \uc704\uce58 \uacbd\ub85c\uac00 \uc640\uc57c \ud558\uc9c0\ub9cc \ub300\uc2e0 \ub2e4\uc74c \ud1a0\ud070\uc774 \ubc1c\uacac\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\u003a  {0}"},
+ 
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+ 
+  {
+    ER_EXPECTED_LOC_STEP,
+       "\uc704\uce58 \ub2e8\uacc4\ub294 '/' \ub610\ub294 '//' \ub2e4\uc74c\uc5d0 \ub098\uc640\uc57c \ud569\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+ 
+  {
+    ER_EXPECTED_NODE_TEST,
+       "NCName:* \ub610\ub294 QName\uacfc \uc77c\uce58\ud558\ub294 \ub178\ub4dc \ud14c\uc2a4\ud2b8\uac00 \uc640\uc57c \ud569\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+ 
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "\ub2e8\uacc4 \ud328\ud134\uc774 \uc640\uc57c \ud558\uc9c0\ub9cc \ub300\uc2e0 '/'\ub97c \ubc1c\uacac\ud588\uc2b5\ub2c8\ub2e4."},
+ 
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+ 
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "\uc0c1\ub300 \uacbd\ub85c \ud328\ud134\uc774 \uc640\uc57c \ud569\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+ 
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "QNAME\uc758 \ub85c\uceec \uc774\ub984\uc740 \uc720\ud6a8\ud55c NCName\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+ 
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+ 
+  {
+    ER_ARG_PREFIX_INVALID,
+       "QNAME\uc758 \uc811\ub450\uc5b4\ub294 \uc720\ud6a8\ud55c NCName\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "{0}\uc744(\ub97c) \ubd80\uc6b8\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "{0}\uc744(\ub97c) \ub2e8\uc77c \ub178\ub4dc\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 getter\ub294 ANY_UNORDERED_NODE_TYPE \uc720\ud615\uacfc FIRST_ORDERED_NODE_TYPE \uc720\ud615\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4."},
+ 
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+ 
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "\uc720\ud615 {0}\uc5d0\uc11c \uc2a4\ub0c5\uc0f7 \uae38\uc774\ub97c \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 getter\ub294 UNORDERED_NODE_SNAPSHOT_TYPE \uc720\ud615\uacfc ORDERED_NODE_SNAPSHOT_TYPE \uc720\ud615\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+ 
+  {
+    ER_NON_ITERATOR_TYPE,
+       "\ube44\ubc18\ubcf5 \uc720\ud615 {0}\uc5d0 \ub300\ud574 \ubc18\ubcf5\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+ 
+  {
+    ER_DOC_MUTATED,
+       "\uacb0\uacfc \uc774\ud6c4\ub85c \ubcc0\uacbd\ub41c \ubb38\uc11c\uac00 \ubc18\ud658\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \ubc18\ubcf5\uc790\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+ 
+  {
+    ER_INVALID_XPATH_TYPE,
+       "\uc798\ubabb\ub41c XPath \uc720\ud615 \uc778\uc790: {0}"},
+ 
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+ 
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "\ube48 XPath \uacb0\uacfc \uac1d\uccb4"},
+ 
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+ 
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "\ubc18\ud658\ub41c \uc720\ud615: {0}\uc744(\ub97c) \uc9c0\uc815\ud55c \uc720\ud615\uc73c\ub85c \uac15\uc81c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4: {1}"},
+ 
+
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+ 
+  {
+    ER_NULL_RESOLVER,
+       "\ub110 \uc811\ub450\uc5b4 \ud574\uacb0\uc790\ub85c \uc811\ub450\uc5b4\ub97c \ud574\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+ 
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "{0}\uc744(\ub97c) \ubb38\uc790\uc5f4\ub85c \ubcc0\ud658\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+ 
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "\uc720\ud615 {0}\uc5d0\uc11c snapshotItem\uc744 \ud638\ucd9c\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \uba54\uc18c\ub4dc\ub294 UNORDERED_NODE_SNAPSHOT_TYPE \uc720\ud615\uacfc ORDERED_NODE_SNAPSHOT_TYPE \uc720\ud615\uc5d0 \uc801\uc6a9\ub429\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+ 
+  {
+    ER_WRONG_DOCUMENT,
+       "\ucee8\ud14d\uc2a4\ud2b8 \ub178\ub4dc\uac00 \uc774 XPathEvaluator\uc5d0 \ubc14\uc6b4\ub529\ub41c \ubb38\uc11c\uc5d0 \uc18d\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+ 
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+ 
+  {
+    ER_WRONG_NODETYPE ,
+       "\ucee8\ud14d\uc2a4\ud2b8 \ub178\ub4dc \uc720\ud615\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+ 
+  {
+    ER_XPATH_ERROR ,
+       "XPath\uc5d0 \uc54c \uc218 \uc5c6\ub294 \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4."},
+ 
+ 
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+ 
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "format-number \uae30\ub2a5\uc758 \ub85c\ucf00\uc77c \uc774\ub984\uc774 \uc544\uc9c1 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+ 
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "XSL \ud2b9\uc131\uc774 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4: {0}"},
+ 
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+ 
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "\ud2b9\uc131 {1}\uc758 \uc774\ub984 \uacf5\uac04 {0}\uc5d0 \uc544\ubb34 \uac83\ub3c4 \uc218\ud589\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624."},
+ 
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+ 
+  {
+    WG_SECURITY_EXCEPTION,
+      "XSL \uc2dc\uc2a4\ud15c \ud2b9\uc131 {0}\uc5d0 \uc561\uc138\uc2a4\ud558\ub824\uace0 \ud560 \ub54c SecurityException\uc774 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4. "},
+ 
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+ 
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "\uc774\uc804 \uad6c\ubb38: quo(...)\ub294 \ub354 \uc774\uc0c1 XPath\uc5d0\uc11c \uc815\uc758\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+ 
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath\ub294 nodeTest \uad6c\ud604\uc744 \uc704\ud574 \ud30c\uc0dd\ub41c \uac1d\uccb4\uac00 \ud544\uc694\ud569\ub2c8\ub2e4!"},
+ 
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+ 
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "\uae30\ub2a5 \ud1a0\ud070\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+ 
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "\ud568\uc218 {0}\uc744(\ub97c) \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+ 
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "{0}\uc5d0\uc11c URL\uc744 \uc791\uc131\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+ 
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "-E \uc635\uc158\uc740 DTM \uad6c\ubb38 \ubd84\uc11d\uae30\uc5d0 \ub300\ud574 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4."},
+ 
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+ 
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference\uac00 \ucee8\ud14d\uc2a4\ud2b8\ub97c \ubc97\uc5b4\ub0ac\uac70\ub098 \uc815\uc758\ub418\uc9c0 \uc54a\uc740 \ubcc0\uc218\uc5d0 \uc9c0\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4! \uc774\ub984 = {0}"},
+ 
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+ 
+  {
+    WG_UNSUPPORTED_ENCODING, "\uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294 \ucf54\ub4dc\ud654: {0}"},
+ 
+
+  // Other miscellaneous text used inside the code...
+ 
+  { "ui_language", "ko"},
+  { "help_language", "ko"},
+  { "language", "ko"},
+    { "BAD_CODE",
+      "createMessage\uc758 \ub9e4\uac1c\ubcc0\uc218\uac00 \ubc14\uc6b4\ub4dc\ub97c \ubc97\uc5b4\ub0ac\uc2b5\ub2c8\ub2e4."},
+    { "FORMAT_FAILED",
+      "messageFormat \ud638\ucd9c \uc2dc \uc608\uc678 \ubc1c\uc0dd"},
+    { "version", ">>>>>>> Xalan \ubc84\uc804 "},
+    { "version2", "<<<<<<<"},
+    { "yes", "\uc608"},
+    { "line", "\ud589 //"},
+    { "column", "\uc5f4 //"},
+    { "xsldone", "XSLProcessor: \uc644\ub8cc"},
+    { "xpath_option", "xpath \uc635\uc158: "},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [-select xpath expression]"},
+    { "optionMatch", 
+      "   [-match \uc77c\uce58 \ud328\ud134 (\uc77c\uce58 \uc9c4\ub2e8\uc5d0 \ub300\ud55c)]"},
+    { "optionAnyExpr",
+      "\ub610\ub294 xpath \ud45c\ud604\uc2dd\uc774 \uc9c4\ub2e8 \ub364\ud504\ub97c \uc218\ud589\ud569\ub2c8\ub2e4."},
+    { "noParsermsg1",
+    "XSL \ud504\ub85c\uc138\uc2a4\uac00 \uc131\uacf5\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4."},
+    { "noParsermsg2",
+    "** \uad6c\ubb38 \ubd84\uc11d\uae30\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4 **"},
+    { "noParsermsg3",
+    "\ud074\ub798\uc2a4 \uacbd\ub85c\ub97c \ud655\uc778\ud558\uc2ed\uc2dc\uc624."},
+    { "noParsermsg4",
+      "Java\uc6a9 IBM XML \uad6c\ubb38 \ubd84\uc11d\uae30\uac00 \uc5c6\ub294 \uacbd\uc6b0 \ub2e4\uc74c\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4."},
+    { "noParsermsg5",
+      "IBM AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//error";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "\uc624\ub958: ";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "\uacbd\uace0: ";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_sv.java b/src/org/apache/xpath/res/XPATHErrorResources_sv.java
new file mode 100644
index 0000000..c678580
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_sv.java
@@ -0,0 +1,1378 @@
+/*
+ * %W% %E%
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_sv extends XPATHErrorResources
+{
+
+
+  /** Field MAX_CODE          */
+public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "Funktionen current() \u00e4r inte till\u00e5ten i ett matchningsm\u00f6nster!"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "Funktionen current() tar inte emot argument!"},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "Implementeringen av funktionen document() har ersatts av org.apache.xalan.xslt.FuncDocument!"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "Kontext saknar \u00e4gardokument!"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string.length() har f\u00f6r m\u00e5nga argument."},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "Funktionen translate() tar emot tre argument!"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "Funktionen unparsed-entity-uri borde ta emot ett argument!"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "Namespace-axel inte implementerad \u00e4n!"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "ok\u00e4nd axel: {0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "ok\u00e4nd matchningshandling!"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "Nodtests argumentl\u00e4ngd i processing-instruction() \u00e4r inte korrekt!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "Kan inte konvertera {0} till ett nummer"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "Kan inte konvertera {0} till en NodeList!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "Kan inte konvertera {0} till en NodeSetDTM!"},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "Kan inte konvertera {0} till en type//{1}"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "Matchningsm\u00f6nster i getMatchScore f\u00f6rv\u00e4ntat!"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "Kunde inte h\u00e4mta variabeln {0}"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "FEL! Ok\u00e4nd op-kod: {0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "Ytterligare otill\u00e5tna tecken: {0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "Litteral omges av fel sorts citationstecken... dubbla citationstecken f\u00f6rv\u00e4ntade!"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "Litteral omges av fel sorts citationstecken... enkla citationstecken f\u00f6rv\u00e4ntade!"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "Tomt uttryck!"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "{0} f\u00f6rv\u00e4ntat, men hittade: {1}"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "Programmerares f\u00f6rs\u00e4kran \u00e4r inte korrekt! - {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "boolean(...)-argument \u00e4r inte l\u00e4ngre valfri med 19990709 XPath-utkast."},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "Hittade ',' men inget f\u00f6reg\u00e5ende argument!"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "Hittade ',' men inget efterf\u00f6ljande argument!"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predikat]' or '.[predikat]' \u00e4r otill\u00e5ten syntax.  Anv\u00e4nd 'self::node()[predikat]' ist\u00e4llet."},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "otill\u00e5tet axel-namn: {0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "ok\u00e4nd nodtyp: {0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "M\u00f6nsterlitteral {0} m\u00e5ste s\u00e4ttas inom citationstecken!"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0} kunde inte formateras till ett nummer"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "Kunde inte skapa XML TransformerFactory Liaison: {0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "Fel! Hittade inte xpath select-uttryck (-select)."},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "FEL! Hittade inte ENDOP efter OP_LOCATIONPATH"},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "Fel intr\u00e4ffade!"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference angiven f\u00f6r variabel som \u00e4r utanf\u00f6r sammanhanget eller som saknar definition!  Namn = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "Enbart barn::- och attribut::- axlar \u00e4r till\u00e5tna i matchningsm\u00f6nster!  Regelvidriga axlar = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() har ett felaktigt antal argument."},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "Funktionen count borde ta emot ett argument!"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "Hittade inte funktionen: {0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "Ej underst\u00f6dd kodning: {0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "Problem intr\u00e4ffade i DTM i getNextSibling... f\u00f6rs\u00f6ker \u00e5terh\u00e4mta"},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "Programmerarfel: EmptyNodeList kan inte skrivas till."},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory underst\u00f6ds inte av XPathContext!"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "Prefix must resolve to a namespace: {0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "parse (InputSource source) underst\u00f6ds inte av XPathContext! Kan inte \u00f6ppna {0}"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument() underst\u00f6ds inte av XPathContext!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "Attributbarn saknar \u00e4gardokument!"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "Attributbarn saknar \u00e4gardokumentelement!"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "SAX API-tecken(char ch[]... hanteras inte av DTM!"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... hanteras inte av DTM!"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison kan inte hantera noder av typen {0}"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper kan inte hantera noder av typen {0}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "DOM2Helper.parse-fel: SystemID - {0} rad - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "DOM2Helper.parse-fel"},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "Varning: kan inte skriva ut text innan dokumentelement!  Ignorerar..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "Kan inte ha mer \u00e4n en rot p\u00e5 en DOM!"},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "Ogiltigt UTF-16-surrogat uppt\u00e4ckt: {0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "IO-fel"},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "Kan inte skapa url f\u00f6r: {0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+  {
+    ER_XPATH_READOBJECT, "I XPath.readObject: {0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "funktionstecken saknas."},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "Argument 'localName' \u00e4r null"},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "Kan inte hantera XPath-typ: {0}"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "NodeSet \u00e4r of\u00f6r\u00e4nderlig"},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "NodeSetDTM \u00e4r of\u00f6r\u00e4nderlig"},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "Variabel ej l\u00f6sbar: {0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "Null error handler"},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "Programmerares f\u00f6rs\u00e4kran: ok\u00e4nd op-kod: {0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 eller 1"},
+
+  
+  
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() underst\u00f6ds inte av XRTreeFragSelectWrapper!"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() underst\u00f6ds inte av XRTreeFragSelectWrapper!"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb() underst\u00f6ds inte av XRStringForChars!"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "Hittade inte variabeln med namn {0}"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars kan inte ta en str\u00e4ng som argument"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "FastStringBuffer-argumentet f\u00e5r inte vara null"},
+    
+/* MANTIS_XALAN CHANGE: BEGIN */ 
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+
+
+  {
+    ER_TWO_OR_THREE,
+       "2 eller 3"},
+
+
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "Variabeln anv\u00e4ndes innan den bands!"},
+
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB kan inte ha en str\u00e4ng som argument!"},
+
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! Fel! Anger roten f\u00f6r en \"walker\" till null!!!"},
+
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "Detta NodeSetDTM kan inte iterera till en tidigare nod!"},
+
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "Detta NodeSet kan inte iterera till en tidigare nod!"},
+
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "Detta NodeSetDTM har inte funktioner f\u00f6r indexering och r\u00e4kning!"},
+
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "Detta NodeSet har inte funktioner f\u00f6r indexering och r\u00e4kning!"},
+
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "Det g\u00e5r inte att anropa setShouldCacheNodes efter att nextNode har anropats!"},
+
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+
+  {
+    ER_ONLY_ALLOWS,
+       "{0} till\u00e5ter bara {1} argument"},
+
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+
+  {
+    ER_UNKNOWN_STEP,
+       "Programmerarkontroll i getNextStepPos: ok\u00e4nt steg Typ: {0}"},
+
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "En relativ s\u00f6kv\u00e4g f\u00f6rv\u00e4ntades efter token '/' eller '//'."},
+
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "En plats f\u00f6rv\u00e4ntades, men f\u00f6ljande token p\u00e5tr\u00e4ffades\u003a  {0}"},
+
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "Ett platssteg f\u00f6rv\u00e4ntades efter token  '/' eller '//'."},
+
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "Ett nodtest som matchar antingen NCName:* eller QName f\u00f6rv\u00e4ntades."},
+
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "Ett stegm\u00f6nster f\u00f6rv\u00e4ntades, men '/' p\u00e5tr\u00e4ffades."},
+
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "Ett m\u00f6nster f\u00f6r relativ s\u00f6kv\u00e4g f\u00f6rv\u00e4ntades."},
+
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "Localname i QNAME b\u00f6r vara ett giltigt NCName"},
+
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "Prefixet i QNAME b\u00f6r vara ett giltigt NCName"},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "Det g\u00e5r inte att konvertera {0} till ett Booleskt v\u00e4rde."},
+
+
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "Det g\u00e5r inte att konvertera {0} till en enda nod. G\u00e4ller typerna ANY_UNORDERED_NODE_TYPE och FIRST_ORDERED_NODE_TYPE."},
+
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "Det g\u00e5r inte att erh\u00e5lla l\u00e4ngd f\u00f6r \u00f6gonblicksbild p\u00e5 typ: {0}. G\u00e4ller typerna UNORDERED_NODE_SNAPSHOT_TYPE och ORDERED_NODE_SNAPSHOT_TYPE."},
+
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "Det g\u00e5r inte att iterera \u00f6ver den icke itererbara typen: {0}"},
+
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+
+  {
+    ER_DOC_MUTATED,
+       "Dokumentet har \u00e4ndrats sedan resultatet genererades. Iterering ogiltig."},
+
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "Ogiltigt XPath-typargument: {0}"},
+
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "Tomt XPath-resultatobjekt"},
+
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "Den genererade typen: {0} kan inte bearbetas i den angivna typen: {1}"},
+
+
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+
+  {
+    ER_NULL_RESOLVER,
+       "Det g\u00e5r inte att l\u00f6sa prefixet utan prefixl\u00f6sare."},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "Det g\u00e5r inte att konvertera {0} till en str\u00e4ng."},
+
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "Det g\u00e5r inte att anropa snapshotItem p\u00e5 typ: {0}. Metoden g\u00e4ller typerna UNORDERED_NODE_SNAPSHOT_TYPE och ORDERED_NODE_SNAPSHOT_TYPE."},
+
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+
+  {
+    ER_WRONG_DOCUMENT,
+       "Kontextnoden tillh\u00f6r inte dokumentet som \u00e4r bundet till denna XPathEvaluator."},
+
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+
+  {
+    ER_WRONG_NODETYPE ,
+       "Kontextnoden kan inte hanteras."},
+
+
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+
+  {
+    ER_XPATH_ERROR ,
+       "Ok\u00e4nt fel i XPath."},
+
+
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "locale-namnet i format-number-funktionen \u00e4nnu inte hanterat!"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "XSL-Egenskap underst\u00f6ds inte: {0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "G\u00f6r f\u00f6r n\u00e4rvarande inte n\u00e5gonting med namespace {0} i egenskap: {1}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "SecurityException vid f\u00f6rs\u00f6k att f\u00e5 tillg\u00e5ng till XSL-systemegenskap: {0}"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "Gammal syntax: quo(...) \u00e4r inte l\u00e4ngre definierad i XPath."},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath beh\u00f6ver ett deriverat objekt f\u00f6r att implementera nodeTest!"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "funktionstecken saknas."},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "Hittade inte funktion: {0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "Kan inte skapa URL fr\u00e5n: {0}"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "Alternativet -E underst\u00f6ds inte f\u00f6r DTM-tolk"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "VariableReference angiven f\u00f6r variabel som \u00e4r utanf\u00f6r sammanhanget eller som saknar definition!  Namn = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    WG_UNSUPPORTED_ENCODING, "Ej underst\u00f6dd kodning: {0}"},
+
+
+  // Other miscellaneous text used inside the code...
+
+  { "ui_language", "sv"},
+  { "help_language", "sv"},
+  { "language", "sv"},
+    { "BAD_CODE",
+      "Parameter till createMessage ligger utanf\u00f6r till\u00e5tet intervall"},
+    { "FORMAT_FAILED",
+      "Undantag utl\u00f6st vid messageFormat-anrop"},
+    { "version", ">>>>>>> Xalan Version"},
+    { "version2", "<<<<<<<"},
+    { "yes",  "ja"},
+    { "line",  "Rad //"},
+    { "column", "Kolumn //"},
+    { "xsldone", "XSLProcessor f\u00e4rdig"},
+    { "xpath_option", "xpath-alternativ"},
+    { "optionIN", "    [-in inputXMLURL]"},
+    { "optionSelect", "[-select xpath-uttryck]"},
+    { "optionMatch",
+      "   [-match matchningsm\u00f6nster (f\u00f6r matchningsdiagnostik)]"},
+    { "optionAnyExpr",
+      "Eller bara ett xpath-uttryck kommer att g\u00f6ra en diagnostik-dump"},
+    { "noParsermsg1", "XSL-Process misslyckades."},
+    { "noParsermsg2", "** Hittade inte tolk **"},
+    { "noParsermsg3", "V\u00e4nligen kontrollera din classpath"},
+    { "noParsermsg4",
+      "Om du inte har IBMs XML-Tolk f\u00f6r Java, kan du ladda ner den fr\u00e5n"},
+    { "noParsermsg5",
+      "IBMs AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "D\u00c5LIG_KOD";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILDE = "FORMATTERING_MISSLYCKADES";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//fel";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "Fel: ";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "Varning: ";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "M\u00d6NSTER ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_zh_CN.java b/src/org/apache/xpath/res/XPATHErrorResources_zh_CN.java
new file mode 100644
index 0000000..412fdc2
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_zh_CN.java
@@ -0,0 +1,1379 @@
+/*
+ * @(#)XPATHErrorResources_zh_CN.java	1.8 02/03/26
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>. 
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_zh_CN extends XPATHErrorResources
+{
+
+
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "\u5339\u914d\u6a21\u5f0f\u4e2d\u4e0d\u5141\u8bb8\u4f7f\u7528 current() \u51fd\u6570\uff01"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "current() \u51fd\u6570\u4e0d\u63a5\u53d7\u53d8\u91cf\uff01"},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "document() \u51fd\u6570\u5de5\u5177\u5df2\u88ab org.apache.xalan.xslt.FuncDocument \u66ff\u4ee3\uff01"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "\u4e0a\u4e0b\u6587\u6ca1\u6709\u5c5e\u4e3b\u6587\u6863\uff01"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length() \u7684\u53d8\u91cf\u592a\u591a\u3002"},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "translate() \u51fd\u6570\u4f7f\u7528\u4e09\u4e2a\u53d8\u91cf\uff01"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "unparsed-entity-uri \u51fd\u6570\u5e94\u4f7f\u7528\u4e00\u4e2a\u53d8\u91cf\uff01"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "\u4ecd\u672a\u5b9e\u73b0\u540d\u79f0\u7a7a\u95f4\u8f74\uff01"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "\u672a\u77e5\u8f74\uff1a{0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "\u5339\u914d\u64cd\u4f5c\u672a\u77e5\uff01"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "processing-instruction() \u8282\u70b9\u7684\u53d8\u91cf\u957f\u5ea6\u6d4b\u8bd5\u4e0d\u6b63\u786e\uff01"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "\u4e0d\u80fd\u5c06 {0} \u8f6c\u6362\u4e3a\u4e00\u4e2a\u6570\u5b57"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "\u4e0d\u80fd\u5c06 {0} \u8f6c\u6362\u4e3a\u4e00\u4e2a NodeList\uff01"},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "\u4e0d\u80fd\u5c06 {0} \u8f6c\u6362\u4e3a\u4e00\u4e2a NodeSetDTM\uff01"},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "\u4e0d\u80fd\u5c06 {0} \u8f6c\u6362\u4e3a\u4e00\u4e2a type//{1}"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "getMatchScore \u4e2d\u9884\u671f\u7684\u5339\u914d\u6a21\u5f0f\uff01"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "\u65e0\u6cd5\u83b7\u5f97\u547d\u540d\u7684\u53d8\u91cf {0}"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "\u9519\u8bef\uff01op \u4ee3\u7801\u672a\u77e5\uff1a{0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "\u989d\u5916\u7684\u975e\u6cd5\u6807\u8bb0\uff1a{0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "\u9519\u8bef\u5f15\u7528\u6587\u5b57... \u9884\u671f\u7684\u53cc\u5f15\u7528\uff01"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "\u9519\u8bef\u5f15\u7528\u6587\u5b57... \u9884\u671f\u7684\u5355\u5f15\u7528\uff01"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "\u7a7a\u8868\u8fbe\u5f0f\uff01"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "\u9884\u671f\u7684 {0}\uff0c\u4f46\u53d1\u73b0\uff1a{1}"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "\u7a0b\u5e8f\u5458\u65ad\u8a00\u662f\u9519\u8bef\u7684\uff01- {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "19990709 XPath \u8349\u7a3f\u4e0d\u518d\u53ef\u9009\u7528 boolean(...) \u53d8\u91cf\u3002"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "\u5df2\u627e\u5230 ','\uff0c\u4f46\u672a\u627e\u5230\u524d\u8ff0\u53d8\u91cf\uff01"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "\u5df2\u627e\u5230 ','\uff0c\u4f46\u672a\u627e\u5230\u4ee5\u4e0b\u53d8\u91cf\uff01"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predicate]' \u6216 '.[predicate]' \u662f\u975e\u6cd5\u8bed\u6cd5\u3002\u8bf7\u6539\u7528 'self::node()[predicate]'\u3002"},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "\u975e\u6cd5\u7684\u8f74\u540d\u79f0\uff1a{0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "\u672a\u77e5\u7684\u8282\u70b9\u7c7b\u578b\uff1a{0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "\u9700\u8981\u5f15\u7528\u6a21\u5f0f\u6587\u5b57 ({0})\uff01"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "\u4e0d\u80fd\u5c06 {0} \u683c\u5f0f\u5316\u4e3a\u4e00\u4e2a\u6570\u5b57\uff01"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "\u4e0d\u80fd\u521b\u5efa XML TransformerFactory Liaison\uff1a{0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "\u9519\u8bef\uff01\u672a\u627e\u5230 xpath select \u8868\u8fbe\u5f0f (-select)\u3002"},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "\u9519\u8bef\uff01\u672a\u5728 OP_LOCATIONPATH \u540e\u627e\u5230 ENDOP"},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "\u51fa\u9519\uff01"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "\u4e3a\u53d8\u91cf\u7ed9\u51fa\u7684 VariableReference \u8d85\u51fa\u4e86\u4e0a\u4e0b\u6587\u8303\u56f4\u6216\u6ca1\u6709\u5b9a\u4e49\uff01\u540d\u79f0 = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "\u5339\u914d\u6a21\u5f0f\u4e2d\u4ec5\u5141\u8bb8\u4f7f\u7528 child:: \u548c attribute:: \u8f74\uff01\u8fdd\u4f8b\u8f74 = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() \u6709\u8bb8\u591a\u4e0d\u6b63\u786e\u7684\u53d8\u91cf\u3002"},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "count \u51fd\u6570\u5e94\u4f7f\u7528\u4e00\u4e2a\u53d8\u91cf\uff01"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "\u672a\u627e\u5230\u51fd\u6570\uff1a{0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "\u4e0d\u53d7\u652f\u6301\u7684\u7f16\u7801\uff1a{0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "getNextSibling \u4e2d\u7684 DTM \u51fa\u73b0\u95ee\u9898 ... \u6b63\u5728\u5c1d\u8bd5\u6062\u590d"},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "\u7a0b\u5e8f\u5458\u51fa\u9519\uff1a\u4e0d\u80fd\u5c06 EmptyNodeList \u5199\u5165\u3002"},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory \u4e0d\u53d7 XPathContext \u652f\u6301\uff01"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\u5fc5\u987b\u89e3\u51b3\u540d\u79f0\u7a7a\u95f4\u7684\u524d\u7f00\uff1a{0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "XPathContext \u4e2d\u4e0d\u652f\u6301\uff08\u8bed\u6cd5\uff09\u5206\u6790\u5668\uff08InputSource \u6e90\uff09\uff01\u65e0\u6cd5\u6253\u5f00 {0}"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "XPathContext \u4e2d\u4e0d\u652f\u6301 createDocument()\uff01"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "\u5b50\u5c5e\u6027\u6ca1\u6709\u5c5e\u4e3b\u6587\u6863\uff01"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "\u5b50\u5c5e\u6027\u6ca1\u6709\u5c5e\u4e3b\u6587\u6863\u5143\u7d20\uff01"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "SAX API characters(char ch[]... \u4e0d\u7531 DTM \u5904\u7406\uff01"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... \u4e0d\u7531 DTM \u5904\u7406\uff01"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison \u65e0\u6cd5\u5904\u7406\u8282\u70b9\u7c7b\u578b {0}"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper \u65e0\u6cd5\u5904\u7406\u8282\u70b9\u7c7b\u578b {0}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "DOM2Helper.parse \u9519\u8bef\uff1aSystemID - {0} line - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "DOM2Helper.parse \u9519\u8bef"},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "\u8b66\u544a\uff1a\u4e0d\u80fd\u8f93\u51fa\u6587\u6863\u5143\u7d20\u4e4b\u524d\u7684\u6587\u5b57\uff01\u5ffd\u7565..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "DOM \u4e0a\u4e0d\u80fd\u6709\u591a\u4e2a\u6839\uff01"},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\u68c0\u6d4b\u5230\u65e0\u6548\u7684 UTF-16 surrogate\uff1a{0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "IO \u9519\u8bef"},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "\u65e0\u6cd5\u521b\u5efa url \u4e3a\uff1a{0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+  {
+    ER_XPATH_READOBJECT, "\u5728 XPath.readObject \u4e2d\uff1a{0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "\u672a\u627e\u5230\u51fd\u6570\u6807\u8bb0\u3002"},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "\u53d8\u91cf 'localName' \u4e3a\u7a7a"},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "\u65e0\u6cd5\u5904\u7406 XPath \u7c7b\u578b\uff1a{0}"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "\u6b64 NodeSet \u4e0d\u6613\u53d8"},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "\u6b64 NodeSetDTM \u4e0d\u6613\u53d8"},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "\u53d8\u91cf\u4e0d\u53ef\u5206\u89e3\uff1a{0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "\u9519\u8bef\u5904\u7406\u5668\u65e0\u6548"},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "\u7a0b\u5e8f\u5458\u65ad\u8a00\uff1aopcode \u672a\u77e5\uff1a{0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 \u6216 1"},
+
+  
+   /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "rtf() \u4e0d\u53d7 XRTreeFragSelectWrapper \u652f\u6301"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "asNodeIterator() \u4e0d\u53d7 XRTreeFragSelectWrapper \u652f\u6301"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "fsb() \u4e0d\u652f\u6301 XStringForChars"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "\u65e0\u6cd5\u627e\u5230\u540d\u79f0\u4e3a {0} \u7684\u53d8\u91cf"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars \u65e0\u6cd5\u4f7f\u7528\u53d8\u91cf\u7684\u4e00\u4e2a\u5b57\u7b26\u4e32"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "FastStringBuffer \u53d8\u91cf\u4e0d\u80fd\u4e3a\u7a7a"},
+    
+   /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+  
+
+  {
+    ER_TWO_OR_THREE,
+       "2 \u6216 3"},
+
+  
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+  
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "\u7ed1\u5b9a\u4e4b\u524d\u8bbf\u95ee\u4e86\u53d8\u91cf\uff01"},
+
+
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB \u65e0\u6cd5\u63a5\u53d7\u5b57\u7b26\u4e32\u7c7b\u578b\u7684\u53d8\u91cf\uff01"},
+
+
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n !!!! \u9519\u8bef\uff01\u904d\u5386\u7a0b\u5e8f\u7684\u6839\u8bbe\u7f6e\u4e3a\u7a7a!!!"},
+
+
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "\u6b64 NodeSetDTM \u65e0\u6cd5\u8fed\u4ee3\u5230\u524d\u4e00\u4e2a\u8282\u70b9\uff01"},
+
+
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "\u6b64 NodeSet \u65e0\u6cd5\u8fed\u4ee3\u5230\u524d\u4e00\u4e2a\u8282\u70b9\uff01"},
+
+
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "\u6b64 NodeSetDTM \u65e0\u6cd5\u4e3a\u51fd\u6570\u5efa\u7acb\u7d22\u5f15\u6216\u8ba1\u7b97\u4e2a\u6570\uff01"},
+
+
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "\u6b64 NodeSet \u65e0\u6cd5\u4e3a\u51fd\u6570\u5efa\u7acb\u7d22\u5f15\u6216\u8ba1\u7b97\u4e2a\u6570\uff01"},
+
+
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "\u8c03\u7528 nextNode \u540e\u65e0\u6cd5\u8c03\u7528 setShouldCacheNodes\uff01"},
+
+
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+
+
+  {
+    ER_ONLY_ALLOWS,
+       "{0} \u4ec5\u5141\u8bb8 {1} \u53d8\u91cf"},
+
+
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+
+
+  {
+    ER_UNKNOWN_STEP,
+       "getNextStepPos \u4e2d\u7684\u7a0b\u5e8f\u5458\u58f0\u660e\uff1a\u672a\u77e5\u7684 stepType\uff1a{0}"},
+
+
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "\u201c/\u201d\u6216\u201c//\u201d\u6807\u8bb0\u540e\u9700\u8981\u91c7\u7528\u76f8\u5bf9\u4f4d\u7f6e\u8def\u5f84\u3002"},
+
+
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "\u9700\u8981\u4f4d\u7f6e\u8def\u5f84\uff0c\u4f46\u9047\u5230\u4ee5\u4e0b\u6807\u8bb0\u003a  {0}"},
+
+
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "\u201c/\u201d\u6216\u201c//\u201d\u6807\u8bb0\u540e\u9700\u8981\u91c7\u7528\u4f4d\u7f6e\u6b65\u9aa4\u3002"},
+
+
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "\u9700\u8981\u4e0e NCName:* \u6216 QName \u5339\u914d\u7684\u8282\u70b9\u6d4b\u8bd5\u3002"},
+
+
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "\u9700\u8981\u6b65\u9aa4\u6a21\u5f0f\uff0c\u4f46\u9047\u5230\u201c/\u201d\u3002"},
+
+
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "\u9700\u8981\u76f8\u5bf9\u8def\u5f84\u6a21\u5f0f\u3002"},
+
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "QNAME \u4e2d\u7684 Localname \u5e94\u8be5\u662f\u4e00\u4e2a\u6709\u6548\u7684 NCName"},
+
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "QNAME \u4e2d\u7684\u524d\u7f00\u5e94\u8be5\u662f\u4e00\u4e2a\u6709\u6548\u7684 NCName"},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "\u65e0\u6cd5\u5c06 {0} \u8f6c\u6362\u6210\u5e03\u5c14\u503c\u3002"},
+
+
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "\u65e0\u6cd5\u5c06 {0} \u8f6c\u6362\u6210\u5355\u8282\u70b9\u3002\u6b64\u83b7\u53d6\u7a0b\u5e8f\u9002\u7528\u4e8e ANY_UNORDERED_NODE_TYPE \u548c FIRST_ORDERED_NODE_TYPE \u7c7b\u578b\u3002"},
+
+
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "\u65e0\u6cd5\u83b7\u53d6\u7c7b\u578b {0} \u4e0a\u7684\u5feb\u7167\u957f\u5ea6\u3002\u6b64\u83b7\u53d6\u7a0b\u5e8f\u9002\u7528\u4e8e UNORDERED_NODE_SNAPSHOT_TYPE \u548c ORDERED_NODE_SNAPSHOT_TYPE \u7c7b\u578b\u3002"},
+
+
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "\u65e0\u6cd5\u8fed\u4ee3\u975e\u53e0\u4ee3\u5668\u7c7b\u578b\uff1a{0}"},
+
+
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+
+
+  {
+    ER_DOC_MUTATED,
+       "\u7531\u4e8e\u7ed3\u679c\u7684\u8fd4\u56de\u4f7f\u6587\u6863\u53d1\u751f\u6539\u53d8\u3002\u53e0\u4ee3\u5668\u65e0\u6548\u3002"},
+
+
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "\u65e0\u6548 XPath \u7c7b\u578b\u53d8\u91cf\uff1a{0}"},
+
+
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "\u7a7a\u7684 XPath \u7ed3\u679c\u5bf9\u8c61"},
+
+
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "\u8fd4\u56de\u7c7b\u578b\uff1a{0} \u65e0\u6cd5\u5f3a\u5236\u8f6c\u6362\u6210\u6307\u5b9a\u7684\u7c7b\u578b\uff1a{1}"},
+
+
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+
+
+  {
+    ER_NULL_RESOLVER,
+       "\u65e0\u6cd5\u7528\u7a7a\u7684\u524d\u7f00\u89e3\u51b3\u5668\u6765\u89e3\u51b3\u524d\u7f00\u3002"},
+
+
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "\u65e0\u6cd5\u5c06 {0} \u8f6c\u6362\u6210\u5b57\u7b26\u4e32\u3002"},
+
+
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "\u65e0\u6cd5\u5bf9\u7c7b\u578b {0} \u8c03\u7528 snapshotItem\u3002\u6b64\u65b9\u6cd5\u9002\u7528\u4e8e UNORDERED_NODE_SNAPSHOT_TYPE \u548c ORDERED_NODE_SNAPSHOT_TYPE \u7c7b\u578b\u3002"},
+
+
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+
+
+  {
+    ER_WRONG_DOCUMENT,
+       "\u4e0a\u4e0b\u6587\u8282\u70b9\u4e0d\u5c5e\u4e8e\u7ed1\u5b9a\u5230\u6b64 XPathEvaluator \u7684\u6587\u6863\u3002"},
+
+
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+
+
+  {
+    ER_WRONG_NODETYPE ,
+       "\u4e0a\u4e0b\u6587\u8282\u70b9\u7c7b\u578b\u4e0d\u53d7\u652f\u6301\u3002"},
+
+
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+
+
+  {
+    ER_XPATH_ERROR ,
+       "XPath \u4e2d\u51fa\u73b0\u672a\u77e5\u9519\u8bef\u3002"},
+
+
+
+  
+
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "\u4ecd\u672a\u5904\u7406 format-number \u51fd\u6570\u4e2d\u7684\u8bed\u8a00\u73af\u5883\u540d\u79f0\uff01"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "\u4e0d\u53d7\u652f\u6301\u7684 XSL Property\uff1a{0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "\u5f53\u524d\u4e0d\u8981\u5bf9\u5c5e\u6027\u4e2d\u7684\u540d\u79f0\u7a7a\u95f4 {0} \u6267\u884c\u4efb\u4f55\u64cd\u4f5c\uff1a{1}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "\u5c1d\u8bd5\u8bbf\u95ee XSL \u7cfb\u7edf\u5c5e\u6027\u65f6\uff0cSecurityException\uff1a{0}"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "\u65e7\u8bed\u6cd5\uff1aXPath \u4e2d\u4e0d\u518d\u5b9a\u4e49 quo(...)\u3002"},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath \u9700\u8981\u7531\u4e00\u4e2a\u6d3e\u751f\u5bf9\u8c61\u6765\u6267\u884c nodeTest\uff01"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "\u672a\u627e\u5230\u51fd\u6570\u6807\u8bb0\u3002"},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "\u65e0\u6cd5\u627e\u5230\u51fd\u6570\uff1a{0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "\u65e0\u6cd5\u5f97\u5230 URL \u81ea\uff1a{0}"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "-E \u9009\u9879\u4e0d\u652f\u6301 DTM\uff08\u8bed\u6cd5\uff09\u5206\u6790\u5668"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "\u4e3a\u53d8\u91cf\u7ed9\u51fa\u7684 VariableReference \u8d85\u51fa\u4e86\u4e0a\u4e0b\u6587\u8303\u56f4\u6216\u6ca1\u6709\u5b9a\u4e49\uff01\u540d\u79f0 = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    WG_UNSUPPORTED_ENCODING, "\u4e0d\u53d7\u652f\u6301\u7684\u7f16\u7801\uff1a{0}"},
+
+
+  // Other miscellaneous text used inside the code...
+  { "ui_language", "zh"},
+  { "help_language", "zh"},
+  { "language", "zh"},
+    { "BAD_CODE",
+      "createMessage \u53c2\u6570\u8d85\u51fa\u4e86\u8303\u56f4"},
+    { "FORMAT_FAILED",
+      "messageFormat \u8c03\u7528\u671f\u95f4\u63d0\u51fa\u4e86\u4f8b\u5916"},
+    { "version", ">>>>>>> Xalan \u7248\u672c"},
+    { "version2", "<<<<<<<"},
+    { "yes", "\u662f"},
+    { "line", "\u884c //"},
+    { "column", "\u5217 //"},
+    { "xsldone", "XSLProcessor\uff1a\u5df2\u5b8c\u6210"},
+    { "xpath_option", "xpath \u9009\u9879\uff1a"},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [-select xpath expression]"},
+    { "optionMatch",
+      "   [-match match pattern (for match diagnostics)]"},
+    { "optionAnyExpr",
+      "\u6216\u8005\u53ea\u6709 xpath \u8868\u8fbe\u5f0f\u5c06\u6267\u884c\u8bca\u65ad\u8f6c\u50a8"},
+    { "noParsermsg1", "XSL Process \u672a\u6210\u529f\u3002"},
+    { "noParsermsg2",
+    "** \u65e0\u6cd5\u627e\u5230\uff08\u8bed\u6cd5\uff09\u5206\u6790\u5668 **"},
+    { "noParsermsg3",
+    "\u8bf7\u68c0\u67e5\u60a8\u7684\u7c7b\u8def\u5f84\u3002"},
+    { "noParsermsg4",
+      "\u5982\u679c\u60a8\u6ca1\u6709 IBM \u7684 XML Parser for Java\uff0c\u5219\u53ef\u4ee5\u4e0b\u8f7d\u5176\u81ea"},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//error";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "\u9519\u8bef\uff1a";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "\u8b66\u544a\uff1a";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
diff --git a/src/org/apache/xpath/res/XPATHErrorResources_zh_TW.java b/src/org/apache/xpath/res/XPATHErrorResources_zh_TW.java
new file mode 100644
index 0000000..cb94882
--- /dev/null
+++ b/src/org/apache/xpath/res/XPATHErrorResources_zh_TW.java
@@ -0,0 +1,1375 @@
+/*
+ * "%W% %E%"
+ * The Apache Software License, Version 1.1
+ *
+ *
+ * Copyright (c) 1999 The Apache Software Foundation.  All rights 
+ * reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. The end-user documentation included with the redistribution,
+ *    if any, must include the following acknowledgment:  
+ *       "This product includes software developed by the
+ *        Apache Software Foundation (http://www.apache.org/)."
+ *    Alternately, this acknowledgment may appear in the software itself,
+ *    if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Xalan" and "Apache Software Foundation" must
+ *    not be used to endorse or promote products derived from this
+ *    software without prior written permission. For written 
+ *    permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ *    nor may "Apache" appear in their name, without prior written
+ *    permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation and was
+ * originally based on software copyright (c) 2002, Sun Microsystems,
+ * Inc., http://www.sun.com.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ */
+package org.apache.xpath.res;
+
+import org.apache.xml.utils.res.XResourceBundleBase;
+
+
+import java.util.*;
+
+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,
+ * you need to first add a Static string constant for the
+ * Key and update the contents array with Key, Value pair
+  * Also you need to  update the count of messages(MAX_CODE)or
+ * the count of warnings(MAX_WARNING) [ Information purpose only]
+ */
+public class XPATHErrorResources_zh_TW extends XPATHErrorResources
+{
+
+  
+  /** Field MAX_CODE          */
+  public static final int MAX_CODE = 116;  // this is needed to keep track of the number of messages          
+
+  /** Field MAX_WARNING          */
+  public static final int MAX_WARNING = 11;  // this is needed to keep track of the number of warnings
+
+  /** Field MAX_OTHERS          */
+  public static final int MAX_OTHERS = 20;
+
+  /** Field MAX_MESSAGES          */
+  public static final int MAX_MESSAGES = MAX_CODE + MAX_WARNING + 1;
+
+
+  // Error messages...
+  public static final Object[][] contents = {
+
+  /** Field ERROR0000          */
+  //public static final int ERROR0000 = 0;
+
+
+  {
+    "ERROR0000", "{0}"},
+
+
+  /** Field ER_CURRENT_NOT_ALLOWED_IN_MATCH          */
+  //public static final int ER_CURRENT_NOT_ALLOWED_IN_MATCH = 1;
+
+
+  {
+    ER_CURRENT_NOT_ALLOWED_IN_MATCH,
+      "\u5728\u7b26\u5408\u578b\u6a23\u4e2d\u4e0d\u5141\u8a31\u4f7f\u7528 current() \u51fd\u5f0f\uff01"},
+
+
+  /** Field ER_CURRENT_TAKES_NO_ARGS          */
+  //public static final int ER_CURRENT_TAKES_NO_ARGS = 2;
+
+
+  {
+    ER_CURRENT_TAKES_NO_ARGS,
+      "current() \u51fd\u5f0f\u4e0d\u63a5\u53d7\u5f15\u6578\uff01"},
+
+
+  /** Field ER_DOCUMENT_REPLACED          */
+  //public static final int ER_DOCUMENT_REPLACED = 3;
+
+
+  {
+    ER_DOCUMENT_REPLACED,
+      "org.apache.xalan.xslt.FuncDocument \u5df2\u53d6\u4ee3\u57f7\u884c document() \u51fd\u5f0f\uff01"},
+
+
+  /** Field ER_CONTEXT_HAS_NO_OWNERDOC          */
+  //public static final int ER_CONTEXT_HAS_NO_OWNERDOC = 4;
+
+
+  {
+    ER_CONTEXT_HAS_NO_OWNERDOC,
+      "\u4e0a\u4e0b\u6587\u4e0d\u542b\u64c1\u6709\u8005\u6587\u4ef6\uff01"},
+
+
+  /** Field ER_LOCALNAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_LOCALNAME_HAS_TOO_MANY_ARGS = 5;
+
+
+  {
+    ER_LOCALNAME_HAS_TOO_MANY_ARGS,
+      "local-name() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_NAMESPACEURI_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAMESPACEURI_HAS_TOO_MANY_ARGS = 6;
+
+
+  {
+    ER_NAMESPACEURI_HAS_TOO_MANY_ARGS,
+      "namespace-uri() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS = 7;
+
+
+  {
+    ER_NORMALIZESPACE_HAS_TOO_MANY_ARGS,
+      "normalize-space() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_NUMBER_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NUMBER_HAS_TOO_MANY_ARGS = 8;
+
+
+  {
+    ER_NUMBER_HAS_TOO_MANY_ARGS,
+      "number() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_NAME_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_NAME_HAS_TOO_MANY_ARGS = 9;
+
+
+  {
+    ER_NAME_HAS_TOO_MANY_ARGS, "name() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_STRING_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRING_HAS_TOO_MANY_ARGS = 10;
+
+
+  {
+    ER_STRING_HAS_TOO_MANY_ARGS,
+      "string() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_STRINGLENGTH_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_STRINGLENGTH_HAS_TOO_MANY_ARGS = 11;
+
+
+  {
+    ER_STRINGLENGTH_HAS_TOO_MANY_ARGS,
+      "string-length() \u6709\u592a\u591a\u5f15\u6578\u3002"},
+
+
+  /** Field ER_TRANSLATE_TAKES_3_ARGS          */
+  //public static final int ER_TRANSLATE_TAKES_3_ARGS = 12;
+
+
+  {
+    ER_TRANSLATE_TAKES_3_ARGS,
+      "translate() \u51fd\u5f0f\u9700\u8981 3 \u500b\u5f15\u6578\uff01"},
+
+
+  /** Field ER_UNPARSEDENTITYURI_TAKES_1_ARG          */
+  //public static final int ER_UNPARSEDENTITYURI_TAKES_1_ARG = 13;
+
+
+  {
+    ER_UNPARSEDENTITYURI_TAKES_1_ARG,
+      "unparsed-entity-uri \u51fd\u5f0f\u9700\u8981 1 \u500b\u5f15\u6578\uff01"},
+
+
+  /** Field ER_NAMESPACEAXIS_NOT_IMPLEMENTED          */
+  //public static final int ER_NAMESPACEAXIS_NOT_IMPLEMENTED = 14;
+
+
+  {
+    ER_NAMESPACEAXIS_NOT_IMPLEMENTED,
+      "namespace \u8ef8\u5c1a\u672a\u5efa\u7f6e\uff01"},
+
+
+  /** Field ER_UNKNOWN_AXIS          */
+  //public static final int ER_UNKNOWN_AXIS = 15;
+
+
+  {
+    ER_UNKNOWN_AXIS, "\u672a\u77e5\u8ef8\uff1a{0}"},
+
+
+  /** Field ER_UNKNOWN_MATCH_OPERATION          */
+  //public static final int ER_UNKNOWN_MATCH_OPERATION = 16;
+
+
+  {
+    ER_UNKNOWN_MATCH_OPERATION, "\u672a\u77e5\u7684\u7b26\u5408\u4f5c\u696d\uff01"},
+
+
+  /** Field ER_INCORRECT_ARG_LENGTH          */
+  //public static final int ER_INCORRECT_ARG_LENGTH = 17;
+
+
+  {
+    ER_INCORRECT_ARG_LENGTH,
+      "processing-instruction() \u7bc0\u9ede\u6e2c\u8a66\u7684\u5f15\u6578\u9577\u5ea6\u4e0d\u6b63\u78ba\uff01"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NUMBER          */
+  //public static final int ER_CANT_CONVERT_TO_NUMBER = 18;
+
+
+  {
+    ER_CANT_CONVERT_TO_NUMBER,
+      "{0} \u7121\u6cd5\u8f49\u63db\u70ba\u6578\u5b57"},
+
+
+  /** Field ER_CANT_CONVERT_TO_NODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_NODELIST = 19;
+
+
+  {
+    ER_CANT_CONVERT_TO_NODELIST,
+      "{0} \u7121\u6cd5\u8f49\u63db\u70ba NodeList\uff01"},
+
+
+  /** Field ER_CANT_CONVERT_TO_MUTABLENODELIST          */
+  //public static final int ER_CANT_CONVERT_TO_MUTABLENODELIST = 20;
+
+
+  {
+    ER_CANT_CONVERT_TO_MUTABLENODELIST,
+      "{0} \u7121\u6cd5\u8f49\u63db\u70ba NodeSetDTM\uff01"},
+
+
+  /** Field ER_CANT_CONVERT_TO_TYPE          */
+  //public static final int ER_CANT_CONVERT_TO_TYPE = 21;
+
+
+  {
+    ER_CANT_CONVERT_TO_TYPE,
+      "{0} \u7121\u6cd5\u8f49\u63db\u70ba type//{1}"},
+
+
+  /** Field ER_EXPECTED_MATCH_PATTERN          */
+  //public static final int ER_EXPECTED_MATCH_PATTERN = 22;
+
+
+  {
+    ER_EXPECTED_MATCH_PATTERN,
+      "\u5728 getMatchScore \u4e2d\u9810\u671f\u7684\u7b26\u5408\u578b\u6a23\uff01"},
+
+
+  /** Field ER_COULDNOT_GET_VAR_NAMED          */
+  //public static final int ER_COULDNOT_GET_VAR_NAMED = 23;
+
+
+  {
+    ER_COULDNOT_GET_VAR_NAMED,
+      "\u7121\u6cd5\u53d6\u5f97\u53eb\u4f5c {0} \u7684\u8b8a\u6578"},
+
+
+  /** Field ER_UNKNOWN_OPCODE          */
+  //public static final int ER_UNKNOWN_OPCODE = 24;
+
+
+  {
+    ER_UNKNOWN_OPCODE, "\u932f\u8aa4\uff01\u672a\u77e5\u7684\u4f5c\u696d\u78bc\uff1a{0}"},
+
+
+  /** Field ER_EXTRA_ILLEGAL_TOKENS          */
+  //public static final int ER_EXTRA_ILLEGAL_TOKENS = 25;
+
+
+  {
+    ER_EXTRA_ILLEGAL_TOKENS, "\u984d\u5916\u4e0d\u5408\u898f\u5247\u7684\u8a18\u865f\uff1a{0}"},
+
+
+  /** Field ER_EXPECTED_DOUBLE_QUOTE          */
+  //public static final int ER_EXPECTED_DOUBLE_QUOTE = 26;
+
+
+  {
+    ER_EXPECTED_DOUBLE_QUOTE,
+      "\u6587\u5b57\u5217\u5f15\u865f\u62ec\u932f... \u9810\u671f\u51fa\u73fe\u96d9\u5f15\u865f\uff01"},
+
+
+  /** Field ER_EXPECTED_SINGLE_QUOTE          */
+  //public static final int ER_EXPECTED_SINGLE_QUOTE = 27;
+
+
+  {
+    ER_EXPECTED_SINGLE_QUOTE,
+      "\u6587\u5b57\u5217\u5f15\u865f\u62ec\u932f... \u9810\u671f\u51fa\u73fe\u55ae\u5f15\u865f\uff01"},
+
+
+  /** Field ER_EMPTY_EXPRESSION          */
+  //public static final int ER_EMPTY_EXPRESSION = 28;
+
+
+  {
+    ER_EMPTY_EXPRESSION, "\u7a7a\u7684\u8868\u793a\u5f0f\uff01"},
+
+
+  /** Field ER_EXPECTED_BUT_FOUND          */
+  //public static final int ER_EXPECTED_BUT_FOUND = 29;
+
+
+  {
+    ER_EXPECTED_BUT_FOUND, "\u9810\u671f {0}\uff0c\u537b\u627e\u5230\uff1a{1}"},
+
+
+  /** Field ER_INCORRECT_PROGRAMMER_ASSERTION          */
+  //public static final int ER_INCORRECT_PROGRAMMER_ASSERTION = 30;
+
+
+  {
+    ER_INCORRECT_PROGRAMMER_ASSERTION,
+      "\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\u5047\u8a2d\u4e0d\u6b63\u78ba\uff01- {0}"},
+
+
+  /** Field ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL          */
+  //public static final int ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL = 31;
+
+
+  {
+    ER_BOOLEAN_ARG_NO_LONGER_OPTIONAL,
+      "boolean(...) \u5f15\u6578\u5728 19990709 XPath \u521d\u7a3f\u4e2d\u4e0d\u518d\u662f\u53ef\u9078\u7528\u7684\u3002"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG = 32;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_PRECEDING_ARG,
+      "\u627e\u5230 ','\uff0c\u4f46\u4e4b\u524d\u6c92\u6709\u5f15\u6578\uff01"},
+
+
+  /** Field ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG          */
+  //public static final int ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG = 33;
+
+
+  {
+    ER_FOUND_COMMA_BUT_NO_FOLLOWING_ARG,
+      "\u627e\u5230 ','\uff0c\u4f46\u4e4b\u5f8c\u6c92\u6709\u5f15\u6578\uff01"},
+
+
+  /** Field ER_PREDICATE_ILLEGAL_SYNTAX          */
+  //public static final int ER_PREDICATE_ILLEGAL_SYNTAX = 34;
+
+
+  {
+    ER_PREDICATE_ILLEGAL_SYNTAX,
+      "'..[predicate]' \u6216 '.[predicate]' \u662f\u4e0d\u5408\u898f\u5247\u7684\u8a9e\u6cd5\u3002\u8acb\u4f7f\u7528 'self::node()[predicate]' \u4f86\u4ee3\u66ff\u3002"},
+
+
+  /** Field ER_ILLEGAL_AXIS_NAME          */
+  //public static final int ER_ILLEGAL_AXIS_NAME = 35;
+
+
+  {
+    ER_ILLEGAL_AXIS_NAME, "\u4e0d\u5408\u898f\u5247\u7684\u8ef8\u540d\u7a31\uff1a{0}"},
+
+
+  /** Field ER_UNKNOWN_NODETYPE          */
+  //public static final int ER_UNKNOWN_NODETYPE = 36;
+
+
+  {
+    ER_UNKNOWN_NODETYPE, "\u672a\u77e5\u7bc0\u9ede\u985e\u578b\uff1a{0}"},
+
+
+  /** Field ER_PATTERN_LITERAL_NEEDS_BE_QUOTED          */
+  //public static final int ER_PATTERN_LITERAL_NEEDS_BE_QUOTED = 37;
+
+
+  {
+    ER_PATTERN_LITERAL_NEEDS_BE_QUOTED,
+      "\u578b\u6a23\u6587\u5b57\u5217 ({0}) \u9700\u8981\u7528\u5f15\u865f\u62ec\u4f4f\uff01"},
+
+
+  /** Field ER_COULDNOT_BE_FORMATTED_TO_NUMBER          */
+  //public static final int ER_COULDNOT_BE_FORMATTED_TO_NUMBER = 38;
+
+
+  {
+    ER_COULDNOT_BE_FORMATTED_TO_NUMBER,
+      "{0} \u7121\u6cd5\u683c\u5f0f\u5316\u70ba\u6578\u5b57\uff01"},
+
+
+  /** Field ER_COULDNOT_CREATE_XMLPROCESSORLIAISON          */
+  //public static final int ER_COULDNOT_CREATE_XMLPROCESSORLIAISON = 39;
+
+
+  {
+    ER_COULDNOT_CREATE_XMLPROCESSORLIAISON,
+      "\u7121\u6cd5\u5efa\u7acb XML TransformerFactory Liaison\uff1a{0}"},
+
+
+  /** Field ER_DIDNOT_FIND_XPATH_SELECT_EXP          */
+  //public static final int ER_DIDNOT_FIND_XPATH_SELECT_EXP = 40;
+
+
+  {
+    ER_DIDNOT_FIND_XPATH_SELECT_EXP,
+      "\u932f\u8aa4\uff01\u672a\u627e\u5230 xpath select \u8868\u793a\u5f0f (-select)\u3002"},
+
+
+  /** Field ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH          */
+  //public static final int ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH = 41;
+
+
+  {
+    ER_COULDNOT_FIND_ENDOP_AFTER_OPLOCATIONPATH,
+      "\u932f\u8aa4\uff01\u5728 OP_LOCATIONPATH \u4e4b\u5f8c\u627e\u4e0d\u5230 ENDOP"},
+
+
+  /** Field ER_ERROR_OCCURED          */
+  //public static final int ER_ERROR_OCCURED = 42;
+
+
+  {
+    ER_ERROR_OCCURED, "\u767c\u751f\u932f\u8aa4\uff01"},
+
+
+  /** Field ER_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int ER_ILLEGAL_VARIABLE_REFERENCE = 43;
+
+
+  {
+    ER_ILLEGAL_VARIABLE_REFERENCE,
+      "\u63d0\u4f9b\u7d66\u8b8a\u6578\u7684 VariableReference \u8d85\u51fa\u4e0a\u4e0b\u6587\u6216\u6c92\u6709\u5b9a\u7fa9\uff01\u540d\u7a31 = {0}"},
+
+
+  /** Field ER_AXES_NOT_ALLOWED          */
+  //public static final int ER_AXES_NOT_ALLOWED = 44;
+
+
+  {
+    ER_AXES_NOT_ALLOWED,
+      "\u5728\u7b26\u5408\u578b\u6a23\u4e2d\u50c5\u5141\u8a31 child:: \u53ca attribute:: \u8ef8\uff01 \u9055\u4f8b\u8ef8 = {0}"},
+
+
+  /** Field ER_KEY_HAS_TOO_MANY_ARGS          */
+  //public static final int ER_KEY_HAS_TOO_MANY_ARGS = 45;
+
+
+  {
+    ER_KEY_HAS_TOO_MANY_ARGS,
+      "key() \u542b\u6709\u4e0d\u6b63\u78ba\u7684\u5f15\u6578\u6578\u76ee\u3002"},
+
+
+  /** Field ER_COUNT_TAKES_1_ARG          */
+  //public static final int ER_COUNT_TAKES_1_ARG = 46;
+
+
+  {
+    ER_COUNT_TAKES_1_ARG,
+      "count \u51fd\u5f0f\u53ea\u63a5\u53d7\u4e00\u500b\u5f15\u6578\uff01"},
+
+
+  /** Field ER_COULDNOT_FIND_FUNCTION          */
+  //public static final int ER_COULDNOT_FIND_FUNCTION = 47;
+
+
+  {
+    ER_COULDNOT_FIND_FUNCTION, "\u627e\u4e0d\u5230\u51fd\u5f0f\uff1a{0}"},
+
+
+  /** Field ER_UNSUPPORTED_ENCODING          */
+  //public static final int ER_UNSUPPORTED_ENCODING = 48;
+
+
+  {
+    ER_UNSUPPORTED_ENCODING, "\u672a\u652f\u63f4\u7684\u7de8\u78bc\uff1a{0}"},
+
+
+  /** Field ER_PROBLEM_IN_DTM_NEXTSIBLING          */
+  //public static final int ER_PROBLEM_IN_DTM_NEXTSIBLING = 49;
+
+
+  {
+    ER_PROBLEM_IN_DTM_NEXTSIBLING,
+      "getNextSibling \u4e2d\u7684 DTM \u767c\u751f\u554f\u984c... \u5617\u8a66\u56de\u5fa9"},
+
+
+  /** Field ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL          */
+  //public static final int ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL = 50;
+
+
+  {
+    ER_CANNOT_WRITE_TO_EMPTYNODELISTIMPL,
+      "\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\u932f\u8aa4\uff1a\u7121\u6cd5\u5beb\u5165 EmptyNodeList \u4e2d\u3002"},
+
+
+  /** Field ER_SETDOMFACTORY_NOT_SUPPORTED          */
+  //public static final int ER_SETDOMFACTORY_NOT_SUPPORTED = 51;
+
+
+  {
+    ER_SETDOMFACTORY_NOT_SUPPORTED,
+      "setDOMFactory \u4e0d\u53d7 XPathContext \u652f\u63f4\uff01"},
+
+
+  /** Field ER_PREFIX_MUST_RESOLVE          */
+  //public static final int ER_PREFIX_MUST_RESOLVE = 52;
+
+
+  {
+    ER_PREFIX_MUST_RESOLVE,
+      "\u524d\u7f6e\u5fc5\u9808\u89e3\u8b6f\u70ba\u540d\u7a31\u7a7a\u9593\uff1a{0}"},
+
+
+  /** Field ER_PARSE_NOT_SUPPORTED          */
+  //public static final int ER_PARSE_NOT_SUPPORTED = 53;
+
+
+  {
+    ER_PARSE_NOT_SUPPORTED,
+      "\u5728 XPathContext \u4e2d\u4e0d\u652f\u63f4\u5256\u6790\uff08InputSource \u4f86\u6e90\uff09\uff01\u7121\u6cd5\u958b\u555f {0}"},
+
+
+  /** Field ER_CREATEDOCUMENT_NOT_SUPPORTED          */
+  //public static final int ER_CREATEDOCUMENT_NOT_SUPPORTED = 54;
+
+
+  {
+    ER_CREATEDOCUMENT_NOT_SUPPORTED,
+      "createDocument() \u5728 XPathContext \u4e2d\u4e0d\u53d7\u652f\u63f4\uff01"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT = 55;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT,
+      "\u5c6c\u6027\u5b50\u9805\u6c92\u6709\u64c1\u6709\u8005\u6587\u4ef6\uff01"},
+
+
+  /** Field ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT          */
+  //public static final int ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT = 56;
+
+
+  {
+    ER_CHILD_HAS_NO_OWNER_DOCUMENT_ELEMENT,
+      "\u5c6c\u6027\u5b50\u9805\u6c92\u6709\u64c1\u6709\u8005\u6587\u4ef6\u5143\u7d20\uff01"},
+
+
+  /** Field ER_SAX_API_NOT_HANDLED          */
+  //public static final int ER_SAX_API_NOT_HANDLED = 57;
+
+
+  {
+    ER_SAX_API_NOT_HANDLED,
+      "SAX API \u5b57\u5143(char ch[]... DTM \u672a\u8655\u7406\uff01"},
+
+
+  /** Field ER_IGNORABLE_WHITESPACE_NOT_HANDLED          */
+  //public static final int ER_IGNORABLE_WHITESPACE_NOT_HANDLED = 58;
+
+
+  {
+    ER_IGNORABLE_WHITESPACE_NOT_HANDLED,
+      "ignorableWhitespace(char ch[]... DTM \u672a\u8655\u7406\uff01"},
+
+
+  /** Field ER_DTM_CANNOT_HANDLE_NODES          */
+  //public static final int ER_DTM_CANNOT_HANDLE_NODES = 59;
+
+
+  {
+    ER_DTM_CANNOT_HANDLE_NODES,
+      "DTMLiaison \u7121\u6cd5\u8655\u7406\u985e\u578b {0} \u7684\u7bc0\u9ede"},
+
+
+  /** Field ER_XERCES_CANNOT_HANDLE_NODES          */
+  //public static final int ER_XERCES_CANNOT_HANDLE_NODES = 60;
+
+
+  {
+    ER_XERCES_CANNOT_HANDLE_NODES,
+      "DOM2Helper \u7121\u6cd5\u8655\u7406\u985e\u578b {0} \u7684\u7bc0\u9ede"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR_DETAILS          */
+  //public static final int ER_XERCES_PARSE_ERROR_DETAILS = 61;
+
+
+  {
+    ER_XERCES_PARSE_ERROR_DETAILS,
+      "DOM2Helper.parse \u932f\u8aa4\uff1aSystemID - {0} \u884c - {1}"},
+
+
+  /** Field ER_XERCES_PARSE_ERROR          */
+  //public static final int ER_XERCES_PARSE_ERROR = 62;
+
+
+  {
+    ER_XERCES_PARSE_ERROR, "DOM2Helper.parse \u932f\u8aa4"},
+
+
+  /** Field ER_CANT_OUTPUT_TEXT_BEFORE_DOC          */
+  //public static final int ER_CANT_OUTPUT_TEXT_BEFORE_DOC = 63;
+
+
+  {
+    ER_CANT_OUTPUT_TEXT_BEFORE_DOC,
+      "\u8b66\u544a\uff1a\u7121\u6cd5\u8f38\u51fa\u6587\u4ef6\u5143\u7d20\u4e4b\u524d\u7684\u6587\u5b57\uff01\u5ffd\u7565..."},
+
+
+  /** Field ER_CANT_HAVE_MORE_THAN_ONE_ROOT          */
+  //public static final int ER_CANT_HAVE_MORE_THAN_ONE_ROOT = 64;
+
+
+  {
+    ER_CANT_HAVE_MORE_THAN_ONE_ROOT,
+      "\u4e00\u500b DOM \u53ea\u80fd\u6709\u4e00\u500b\u6839\uff01"},
+
+
+  /** Field ER_INVALID_UTF16_SURROGATE          */
+  //public static final int ER_INVALID_UTF16_SURROGATE = 65;
+
+
+  {
+    ER_INVALID_UTF16_SURROGATE,
+      "\u5075\u6e2c\u5230\u7121\u6548\u7684 UTF-16 \u4ee3\u7528\u54c1\uff1a{0} ?"},
+
+
+  /** Field ER_OIERROR          */
+  //public static final int ER_OIERROR = 66;
+
+
+  {
+    ER_OIERROR, "\u8f38\u5165/\u8f38\u51fa (I/O) \u932f\u8aa4"},
+
+
+  /** Field ER_CANNOT_CREATE_URL          */
+  //public static final int ER_CANNOT_CREATE_URL = 67;
+
+
+  {
+    ER_CANNOT_CREATE_URL, "\u7121\u6cd5\u5efa\u7acb URL \u7d66\uff1a {0}"},
+
+
+  /** Field ER_XPATH_READOBJECT          */
+  //public static final int ER_XPATH_READOBJECT = 68;
+
+
+  {
+    ER_XPATH_READOBJECT, "\u5728 XPath.readObject\uff1a{0}"},
+
+  
+  /** Field ER_XPATH_READOBJECT         */
+  //public static final int ER_FUNCTION_TOKEN_NOT_FOUND = 69;
+
+
+  {
+    ER_FUNCTION_TOKEN_NOT_FOUND,
+      "\u627e\u4e0d\u5230\u51fd\u5f0f\u8a18\u865f\u3002"},
+
+  
+   /**  Argument 'localName' is null  */
+  //public static final int ER_ARG_LOCALNAME_NULL = 70;
+
+
+  {
+    ER_ARG_LOCALNAME_NULL,
+       "\u5f15\u6578 'localName' \u70ba\u7a7a\u503c"},
+
+  
+   /**  Can not deal with XPath type:   */
+  //public static final int ER_CANNOT_DEAL_XPATH_TYPE = 71;
+
+
+  {
+    ER_CANNOT_DEAL_XPATH_TYPE,
+       "\u7121\u6cd5\u8655\u7406 XPath \u985e\u578b\uff1a{0}"},
+
+  
+   /**  This NodeSet is not mutable  */
+  //public static final int ER_NODESET_NOT_MUTABLE = 72;
+
+
+  {
+    ER_NODESET_NOT_MUTABLE,
+       "\u6b64\u985e NodeSet \u4e0d\u6613\u8b8a"},
+
+  
+   /**  This NodeSetDTM is not mutable  */
+  //public static final int ER_NODESETDTM_NOT_MUTABLE = 73;
+
+
+  {
+    ER_NODESETDTM_NOT_MUTABLE,
+       "\u6b64\u985e NodeSetDTM \u4e0d\u6613\u8b8a"},
+
+  
+   /**  Variable not resolvable:   */
+  //public static final int ER_VAR_NOT_RESOLVABLE = 74;
+
+
+  {
+    ER_VAR_NOT_RESOLVABLE,
+        "\u8b8a\u6578\u7121\u6cd5\u89e3\u8b6f\uff1a{0}"},
+
+  
+   /** Null error handler  */
+  //public static final int ER_NULL_ERROR_HANDLER = 75;
+
+
+  {
+    ER_NULL_ERROR_HANDLER,
+        "\u7a7a\u7684\u932f\u8aa4\u8655\u7406\u5668"},
+
+  
+   /**  Programmer's assertion: unknown opcode  */
+  //public static final int ER_PROG_ASSERT_UNKNOWN_OPCODE = 76;
+
+
+  {
+    ER_PROG_ASSERT_UNKNOWN_OPCODE,
+       "\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\u7684\u5047\u8a2d\uff1a\u672a\u77e5\u4f5c\u696d\u78bc\uff1a{0}"},
+
+  
+   /**  0 or 1   */
+  //public static final int ER_ZERO_OR_ONE = 77;
+
+
+  {
+    ER_ZERO_OR_ONE,
+       "0 \u6216 1"},
+
+  
+  
+     /**  rtf() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 78;
+
+
+  {
+    ER_RTF_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "XRTreeFragSelectWrapper \u4e0d\u652f\u63f4 rtf()"},
+
+  
+   /**  asNodeIterator() not supported by XRTreeFragSelectWrapper   */
+  //public static final int ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER = 79;
+
+
+  {
+    ER_ASNODEITERATOR_NOT_SUPPORTED_XRTREEFRAGSELECTWRAPPER,
+       "XRTreeFragSelectWrapper \u4e0d\u652f\u63f4 asNodeIterator()"},
+
+  
+   /**  fsb() not supported for XStringForChars   */
+  //public static final int ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS = 80;
+
+
+  {
+    ER_FSB_NOT_SUPPORTED_XSTRINGFORCHARS,
+       "XStringForChars \u4e0d\u652f\u63f4 fsb()"},
+
+  
+   /**  Could not find variable with the name of   */
+  //public static final int ER_COULD_NOT_FIND_VAR = 81;
+
+
+  {
+    ER_COULD_NOT_FIND_VAR,
+      "\u627e\u4e0d\u5230\u540d\u7a31\u70ba {0} \u7684\u8b8a\u6578"},
+
+  
+   /**  XStringForChars can not take a string for an argument   */
+  //public static final int ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING = 82;
+
+
+  {
+    ER_XSTRINGFORCHARS_CANNOT_TAKE_STRING,
+      "XStringForChars \u4e0d\u63a5\u53d7\u5b57\u4e32\u5f15\u6578"},
+
+  
+   /**  The FastStringBuffer argument can not be null   */
+  //public static final int ER_FASTSTRINGBUFFER_CANNOT_BE_NULL = 83;
+
+
+  {
+    ER_FASTSTRINGBUFFER_CANNOT_BE_NULL,
+      "FastStringBuffer \u5f15\u6578\u4e0d\u5f97\u70ba\u7a7a\u503c"},
+    
+    /**  2 or 3   */
+  //public static final int ER_TWO_OR_THREE = 84;
+  
+
+  {
+    ER_TWO_OR_THREE,
+       "2 \u6216 3"},
+
+ 
+   /** Variable accessed before it is bound! */
+  //public static final int ER_VARIABLE_ACCESSED_BEFORE_BIND = 85;
+ 
+
+  {
+    ER_VARIABLE_ACCESSED_BEFORE_BIND,
+       "\u9023\u7d50\u524d\u5df2\u5b58\u53d6\u8b8a\u6578\uff01"},
+
+ 
+   /** XStringForFSB can not take a string for an argument! */
+  //public static final int ER_FSB_CANNOT_TAKE_STRING = 86;
+ 
+
+  {
+    ER_FSB_CANNOT_TAKE_STRING,
+       "XStringForFSB \u4e0d\u6703\u5c07\u5b57\u4e32\u770b\u4f5c\u5f15\u6578\uff01"},
+
+ 
+   /** Error! Setting the root of a walker to null! */
+  //public static final int ER_SETTING_WALKER_ROOT_TO_NULL = 87;
+ 
+
+  {
+    ER_SETTING_WALKER_ROOT_TO_NULL,
+       "\n \uff01\uff01\uff01\uff01\u932f\u8aa4\uff01\u5c07 walker \u7684\u6839\u8a2d\u5b9a\u70ba\u7a7a\uff01\uff01\uff01"},
+
+ 
+   /** This NodeSetDTM can not iterate to a previous node! */
+  //public static final int ER_NODESETDTM_CANNOT_ITERATE = 88;
+ 
+
+  {
+    ER_NODESETDTM_CANNOT_ITERATE,
+       "\u7121\u6cd5\u5c0d\u524d\u4e00\u500b\u7bc0\u9ede\u91cd\u8907\u6b64 NodeSetDTM\uff01"},
+
+ 
+  /** This NodeSet can not iterate to a previous node! */
+  //public static final int ER_NODESET_CANNOT_ITERATE = 89;
+ 
+
+  {
+    ER_NODESET_CANNOT_ITERATE,
+       "\u7121\u6cd5\u5c0d\u524d\u4e00\u500b\u7bc0\u9ede\u91cd\u8907\u6b64 NodeSet\uff01"},
+
+ 
+  /** This NodeSetDTM can not do indexing or counting functions! */
+  //public static final int ER_NODESETDTM_CANNOT_INDEX = 90;
+ 
+
+  {
+    ER_NODESETDTM_CANNOT_INDEX,
+       "\u6b64 NodeSetDTM \u7121\u6cd5\u5c0d\u51fd\u5f0f\u9032\u884c\u7d22\u5f15\u6216\u8a08\u6578\uff01"},
+
+ 
+  /** This NodeSet can not do indexing or counting functions! */
+  //public static final int ER_NODESET_CANNOT_INDEX = 91;
+ 
+
+  {
+    ER_NODESET_CANNOT_INDEX,
+       "\u6b64 NodeSet \u7121\u6cd5\u5c0d\u51fd\u5f0f\u9032\u884c\u7d22\u5f15\u6216\u8a08\u6578\uff01"},
+
+ 
+  /** Can not call setShouldCacheNodes after nextNode has been called! */
+  //public static final int ER_CANNOT_CALL_SETSHOULDCACHENODE = 92;
+ 
+
+  {
+    ER_CANNOT_CALL_SETSHOULDCACHENODE,
+       "\u547c\u53eb nextNode \u4e4b\u5f8c\uff0c\u4e0d\u80fd\u547c\u53eb setShouldCacheNodes\uff01"},
+
+ 
+  /** {0} only allows {1} arguments */
+  //public static final int ER_ONLY_ALLOWS = 93;
+ 
+
+  {
+    ER_ONLY_ALLOWS,
+       "{0} \u50c5\u5141\u8a31\u4f7f\u7528 {1} \u5f15\u6578"},
+
+ 
+  /** Programmer's assertion in getNextStepPos: unknown stepType: {0} */
+  //public static final int ER_UNKNOWN_STEP = 94;
+ 
+
+  {
+    ER_UNKNOWN_STEP,
+       "\u7a0b\u5f0f\u8a2d\u8a08\u5e2b\u5728 getNextStepPos \u4e2d\u7684\u5224\u65b7\uff1a\u672a\u77e5\u7684 stepType\uff1a{0}"},
+
+ 
+  //Note to translators:  A relative location path is a form of XPath expression.
+  // The message indicates that such an expression was expected following the
+  // characters '/' or '//', but was not found.
+ 
+  /** Problem with RelativeLocationPath */
+  //public static final int ER_EXPECTED_REL_LOC_PATH = 95;
+ 
+
+  {
+    ER_EXPECTED_REL_LOC_PATH,
+       "'/' \u6216 '//' \u8a18\u865f\u4e4b\u5f8c\u61c9\u8ddf\u96a8\u76f8\u5c0d\u4f4d\u7f6e\u7684\u8def\u5f91\u3002"},
+
+ 
+  // Note to translators:  A location path is a form of XPath expression.
+  // The message indicates that syntactically such an expression was expected,but
+  // the characters specified by the substitution text were encountered instead.
+ 
+  /** Problem with LocationPath */
+  //public static final int ER_EXPECTED_LOC_PATH = 96;
+ 
+
+  {
+    ER_EXPECTED_LOC_PATH,
+       "\u61c9\u70ba\u4f4d\u7f6e\u8def\u5f91\uff0c\u537b\u9047\u5230\u4ee5\u4e0b\u8a18\u865f \u003a  {0}"},
+
+ 
+  // Note to translators:  A location step is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected
+  // following the specified characters.
+ 
+  /** Problem with Step */
+  //public static final int ER_EXPECTED_LOC_STEP = 97;
+ 
+
+  {
+    ER_EXPECTED_LOC_STEP,
+       "'/' \u6216 '//' \u8a18\u865f\u4e4b\u5f8c\u61c9\u8ddf\u96a8\u4f4d\u7f6e\u6b65\u9a5f\u3002"},
+
+ 
+  // Note to translators:  A node test is part of an XPath expression that is
+  // used to test for particular kinds of nodes.  In this case, a node test that
+  // consists of an NCName followed by a colon and an asterisk or that consists
+  // of a QName was expected, but was not found.
+ 
+  /** Problem with NodeTest */
+  //public static final int ER_EXPECTED_NODE_TEST = 98;
+ 
+
+  {
+    ER_EXPECTED_NODE_TEST,
+       "\u61c9\u70ba\u7b26\u5408 NCName:* \u6216 QName \u7684\u7bc0\u9ede\u6e2c\u8a66\u3002"},
+
+ 
+  // Note to translators:  A step pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but the specified character was found in the expression instead.
+ 
+  /** Expected step pattern */
+  //public static final int ER_EXPECTED_STEP_PATTERN = 99;
+ 
+
+  {
+    ER_EXPECTED_STEP_PATTERN,
+       "\u61c9\u70ba\u6b65\u9a5f\u578b\u6a23\uff0c\u537b\u9047\u5230 '/'\u3002"},
+
+  
+  // Note to translators: A relative path pattern is part of an XPath expression.
+  // The message indicates that syntactically such an expression was expected,
+  // but was not found.
+ 
+  /** Expected relative path pattern */
+  //public static final int ER_EXPECTED_REL_PATH_PATTERN = 100;
+ 
+
+  {
+    ER_EXPECTED_REL_PATH_PATTERN,
+       "\u61c9\u70ba\u76f8\u5c0d\u8def\u5f91\u578b\u6a23\u3002"},
+
+
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The localname is the portion after the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+
+  /** localname in QNAME should be a valid NCName */
+  //public static final int ER_ARG_LOCALNAME_INVALID = 101;
+ 
+
+  {
+    ER_ARG_LOCALNAME_INVALID,
+       "QNAME \u4e2d\u7684 Localname \u61c9\u70ba\u6709\u6548\u7684 NCName"},
+
+  
+  // Note to translators:  A QNAME has the syntactic form [NCName:]NCName
+  // The prefix is the portion before the optional colon; the message indicates
+  // that there is a problem with that part of the QNAME.
+ 
+  /** prefix in QNAME should be a valid NCName */
+  //public static final int ER_ARG_PREFIX_INVALID = 102;
+ 
+
+  {
+    ER_ARG_PREFIX_INVALID,
+       "QNAME \u4e2d\u7684\u524d\u7f6e\u61c9\u70ba\u6709\u6548\u7684 NCName"},
+
+  
+   // Note to translators:  The substitution text is the name of a data type.  The
+   // message indicates that a value of a particular type could not be converted
+   // to a value of type string.
+ 
+  /** Field ER_CANT_CONVERT_TO_BOOLEAN          */
+  //public static final int ER_CANT_CONVERT_TO_BOOLEAN = 103;
+ 
+
+  {
+    ER_CANT_CONVERT_TO_BOOLEAN,
+       "{0} \u7121\u6cd5\u8f49\u63db\u70ba\u5e03\u6797\u503c\u3002"},
+
+ 
+  // Note to translators: Do not translate ANY_UNORDERED_NODE_TYPE and 
+  // FIRST_ORDERED_NODE_TYPE.
+ 
+  /** Field ER_CANT_CONVERT_TO_SINGLENODE       */
+  //public static final int ER_CANT_CONVERT_TO_SINGLENODE = 104;
+ 
+
+  {
+    ER_CANT_CONVERT_TO_SINGLENODE,
+       "{0} \u7121\u6cd5\u8f49\u63db\u70ba\u55ae\u4e00\u7bc0\u9ede\u3002\u6b64 getter \u9069\u7528\u65bc ANY_UNORDERED_NODE_TYPE \u548c FIRST_ORDERED_NODE_TYPE \u985e\u578b\u3002"},
+
+ 
+  // Note to translators: Do not translate UNORDERED_NODE_SNAPSHOT_TYPE and
+  // ORDERED_NODE_SNAPSHOT_TYPE.
+ 
+  /** Field ER_CANT_GET_SNAPSHOT_LENGTH         */
+  //public static final int ER_CANT_GET_SNAPSHOT_LENGTH = 105;
+ 
+
+  {
+    ER_CANT_GET_SNAPSHOT_LENGTH,
+       "\u7121\u6cd5\u53d6\u5f97\u985e\u578b {0} \u7684\u5feb\u7167\u9577\u5ea6\u3002\u6b64 getter \u9069\u7528\u65bc UNORDERED_NODE_SNAPSHOT_TYPE \u548c ORDERED_NODE_SNAPSHOT_TYPE \u985e\u578b\u3002"},
+
+ 
+  /** Field ER_NON_ITERATOR_TYPE                */
+  //public static final int ER_NON_ITERATOR_TYPE        = 106;
+ 
+
+  {
+    ER_NON_ITERATOR_TYPE,
+       "\u7121\u6cd5\u91cd\u8907\u975e\u758a\u4ee3\u5668\u985e\u578b\uff1a{0}"},
+
+ 
+  // Note to translators: This message indicates that the document being operated
+  // upon changed, so the iterator object that was being used to traverse the
+  // document has now become invalid.
+ 
+  /** Field ER_DOC_MUTATED                      */
+  //public static final int ER_DOC_MUTATED              = 107;
+ 
+
+  {
+    ER_DOC_MUTATED,
+       "\u50b3\u56de\u7d50\u679c\u5f8c\u6587\u4ef6\u767c\u751f\u8b8a\u66f4\u3002\u758a\u4ee3\u5668\u7121\u6548\u3002"},
+
+ 
+  /** Field ER_INVALID_XPATH_TYPE               */
+  //public static final int ER_INVALID_XPATH_TYPE       = 108;
+ 
+
+  {
+    ER_INVALID_XPATH_TYPE,
+       "\u7121\u6548\u7684 XPath \u985e\u578b\u5f15\u6578\uff1a{0}"},
+
+ 
+  /** Field ER_EMPTY_XPATH_RESULT                */
+  //public static final int ER_EMPTY_XPATH_RESULT       = 109;
+ 
+
+  {
+    ER_EMPTY_XPATH_RESULT,
+       "\u7a7a\u7684 XPath \u7d50\u679c\u7269\u4ef6"},
+
+ 
+  /** Field ER_INCOMPATIBLE_TYPES                */
+  //public static final int ER_INCOMPATIBLE_TYPES       = 110;
+ 
+
+  {
+    ER_INCOMPATIBLE_TYPES,
+       "\u50b3\u56de\u7684\u985e\u578b\uff1a{0} \u7121\u6cd5\u5f37\u884c\u8f49\u63db\u70ba\u6307\u5b9a\u7684\u985e\u578b\uff1a{1}"},
+
+ 
+  /** Field ER_NULL_RESOLVER                     */
+  //public static final int ER_NULL_RESOLVER            = 111;
+ 
+
+  {
+    ER_NULL_RESOLVER,
+       "\u7121\u6cd5\u4f7f\u7528\u7a7a\u524d\u7f6e\u89e3\u6790\u5668\u89e3\u6790\u524d\u7f6e\u3002"},
+
+ 
+  // Note to translators:  The substitution text is the name of a data type.  The
+  // message indicates that a value of a particular type could not be converted
+  // to a value of type string.
+ 
+  /** Field ER_CANT_CONVERT_TO_STRING            */
+  //public static final int ER_CANT_CONVERT_TO_STRING   = 112;
+ 
+
+  {
+    ER_CANT_CONVERT_TO_STRING,
+       "{0} \u7121\u6cd5\u8f49\u63db\u70ba\u5b57\u4e32\u3002"},
+
+ 
+  // Note to translators: Do not translate snapshotItem,
+  // UNORDERED_NODE_SNAPSHOT_TYPE and ORDERED_NODE_SNAPSHOT_TYPE.
+ 
+  /** Field ER_NON_SNAPSHOT_TYPE                 */
+  //public static final int ER_NON_SNAPSHOT_TYPE       = 113;
+ 
+
+  {
+    ER_NON_SNAPSHOT_TYPE,
+       "\u7121\u6cd5\u547c\u53eb\u985e\u578b {0} \u7684 snapshotItem\u3002 \u6b64\u65b9\u6cd5\u9069\u7528\u65bc UNORDERED_NODE_SNAPSHOT_TYPE \u548c ORDERED_NODE_SNAPSHOT_TYPE \u985e\u578b\u3002"},
+
+ 
+  // Note to translators:  XPathEvaluator is a Java interface name.  An
+  // XPathEvaluator is created with respect to a particular XML document, and in
+  // this case the expression represented by this object was being evaluated with
+  // respect to a context node from a different document.
+ 
+  /** Field ER_WRONG_DOCUMENT                    */
+  //public static final int ER_WRONG_DOCUMENT          = 114;
+ 
+  {
+    ER_WRONG_DOCUMENT,
+       "\u4e0a\u4e0b\u6587\u7bc0\u9ede\u4e0d\u5c6c\u65bc\u9023\u7d50\u81f3\u6b64 XPathEvaluator \u7684\u6587\u4ef6\u3002"},
+
+ 
+  // Note to translators:  The XPath expression cannot be evaluated with respect
+  // to this type of node.
+  /** Field ER_WRONG_NODETYPE                    */
+  //public static final int ER_WRONG_NODETYPE          = 115;
+ 
+
+  {
+    ER_WRONG_NODETYPE ,
+       "\u4e0d\u652f\u63f4\u4e0a\u4e0b\u6587\u7bc0\u9ede\u3002"},
+
+ 
+  /** Field ER_XPATH_ERROR                       */
+  //public static final int ER_XPATH_ERROR             = 116;
+ 
+
+  {
+    ER_XPATH_ERROR ,
+       "XPath \u4e2d\u51fa\u73fe\u672a\u77e5\u932f\u8aa4\u3002"},
+
+ 
+
+  // Warnings...
+
+  /** Field WG_LOCALE_NAME_NOT_HANDLED          */
+  //public static final int WG_LOCALE_NAME_NOT_HANDLED = 1;
+
+
+  {
+    WG_LOCALE_NAME_NOT_HANDLED,
+      "format-number \u51fd\u5f0f\u4e2d\u7684\u8a9e\u8a00\u74b0\u5883\u540d\u7a31\u5c1a\u672a\u8655\u7406\uff01"},
+
+
+  /** Field WG_PROPERTY_NOT_SUPPORTED          */
+  //public static final int WG_PROPERTY_NOT_SUPPORTED = 2;
+
+
+  {
+    WG_PROPERTY_NOT_SUPPORTED,
+      "\u4e0d\u652f\u63f4 XSL \u5167\u5bb9\uff1a{0}"},
+
+
+  /** Field WG_DONT_DO_ANYTHING_WITH_NS          */
+  //public static final int WG_DONT_DO_ANYTHING_WITH_NS = 3;
+
+
+  {
+    WG_DONT_DO_ANYTHING_WITH_NS,
+      "\u76ee\u524d\u8acb\u52ff\u8655\u7406\u5167\u5bb9 {1} \u4e2d\u7684\u540d\u7a31\u7a7a\u9593 {0}"},
+
+
+  /** Field WG_SECURITY_EXCEPTION          */
+  //public static final int WG_SECURITY_EXCEPTION = 4;
+
+
+  {
+    WG_SECURITY_EXCEPTION,
+      "\u5617\u8a66\u5b58\u53d6 XSL \u7cfb\u7d71\u5167\u5bb9 {0} \u6642\u767c\u751f SecurityException"},
+
+
+  /** Field WG_QUO_NO_LONGER_DEFINED          */
+  //public static final int WG_QUO_NO_LONGER_DEFINED = 5;
+
+
+  {
+    WG_QUO_NO_LONGER_DEFINED,
+      "\u820a\u8a9e\u6cd5\uff1aquo(...) \u4e0d\u518d\u5b9a\u7fa9\u65bc XPath \u4e2d\u3002"},
+
+
+  /** Field WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST          */
+  //public static final int WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST = 6;
+
+
+  {
+    WG_NEED_DERIVED_OBJECT_TO_IMPLEMENT_NODETEST,
+      "XPath \u9700\u8981\u884d\u751f\u7269\u4ef6\u4f86\u57f7\u884c nodeTest\uff01"},
+
+
+  /** Field WG_FUNCTION_TOKEN_NOT_FOUND          */
+  //public static final int WG_FUNCTION_TOKEN_NOT_FOUND = 7;
+
+
+  {
+    WG_FUNCTION_TOKEN_NOT_FOUND,
+      "\u627e\u4e0d\u5230\u51fd\u5f0f\u8a18\u865f\u3002"},
+
+
+  /** Field WG_COULDNOT_FIND_FUNCTION          */
+  //public static final int WG_COULDNOT_FIND_FUNCTION = 8;
+
+
+  {
+    WG_COULDNOT_FIND_FUNCTION,
+      "\u627e\u4e0d\u5230\u51fd\u5f0f\uff1a{0}"},
+
+
+  /** Field WG_CANNOT_MAKE_URL_FROM          */
+  //public static final int WG_CANNOT_MAKE_URL_FROM = 9;
+
+
+  {
+    WG_CANNOT_MAKE_URL_FROM,
+      "\u7121\u6cd5\u5f9e {0} \u7522\u751f URL"},
+
+
+  /** Field WG_EXPAND_ENTITIES_NOT_SUPPORTED          */
+  //public static final int WG_EXPAND_ENTITIES_NOT_SUPPORTED = 10;
+
+
+  {
+    WG_EXPAND_ENTITIES_NOT_SUPPORTED,
+      "DTM \u5256\u6790\u5668\u4e0d\u652f\u63f4 -E \u9078\u9805"},
+
+
+  /** Field WG_ILLEGAL_VARIABLE_REFERENCE          */
+  //public static final int WG_ILLEGAL_VARIABLE_REFERENCE = 11;
+
+
+  {
+    WG_ILLEGAL_VARIABLE_REFERENCE,
+      "\u63d0\u4f9b\u7d66\u8b8a\u6578\u7684 VariableReference \u8d85\u51fa\u4e0a\u4e0b\u6587\u6216\u6c92\u6709\u5b9a\u7fa9\uff01\u540d\u7a31 = {0}"},
+
+
+  /** Field WG_UNSUPPORTED_ENCODING          */
+  //public static final int WG_UNSUPPORTED_ENCODING = 12;
+
+
+  {
+    WG_UNSUPPORTED_ENCODING, "\u672a\u652f\u63f4\u7684\u7de8\u78bc\uff1a{0}"},
+
+
+  // Other miscellaneous text used inside the code...
+
+  { "ui_language", "zh_TW"},
+  { "help_language", "zh_TW"},
+  { "language", "zh_TW"},
+    { "BAD_CODE",
+      "createMessage \u7684\u53c3\u6578\u8d85\u51fa\u754c\u9650"},
+    { "FORMAT_FAILED",
+      "\u5728 messageFormat \u547c\u53eb\u671f\u9593\u7570\u5e38\u4e1f\u51fa"},
+    { "version", ">>>>>>> Xalan \u7248\u672c"},
+    { "version2", "<<<<<<<"},
+    { "yes", "\u662f"},
+    { "line", "\u5217 //"},
+    { "column", "\u884c //"},
+    { "xsldone", "XSLProcessor: done"},
+    { "xpath_option", "xpath \u9078\u9805\uff1a "},
+    { "optionIN", "   [-in inputXMLURL]"},
+    { "optionSelect", "   [-select xpath expression]"},
+    { "optionMatch", 
+      "   [-match match pattern (\u7528\u65bc\u7b26\u5408\u8a3a\u65b7)]"},
+    { "optionAnyExpr",
+      "\u6216\u53ea\u6709\u4e00\u500b xpath \u8868\u793a\u5f0f\u6703\u57f7\u884c\u8a3a\u65b7\u50be\u5370"},
+    { "noParsermsg1", "XSL \u7a0b\u5e8f\u4e0d\u6210\u529f\u3002"},
+    { "noParsermsg2", "** \u627e\u4e0d\u5230\u5256\u6790\u5668 **"},
+    { "noParsermsg3", "\u8acb\u6aa2\u67e5\u985e\u5225\u8def\u5f91\u3002"},
+    { "noParsermsg4", 
+      "\u5982\u679c\u60a8\u6c92\u6709 IBM \u7684 XML Parser for Java\uff0c\u53ef\u4e0b\u8f09\u81ea "},
+    { "noParsermsg5",
+      "IBM's AlphaWorks: http://www.alphaworks.ibm.com/formula/xml"}
+  };
+
+  // ================= INFRASTRUCTURE ======================
+
+  /** Field BAD_CODE          */
+  public static final String BAD_CODE = "BAD_CODE";
+
+  /** Field FORMAT_FAILED          */
+  public static final String FORMAT_FAILED = "FORMAT_FAILED";
+
+  /** Field ERROR_RESOURCES          */
+  public static final String ERROR_RESOURCES =
+    "org.apache.xpath.res.XPATHErrorResources";
+
+  /** Field ERROR_STRING          */
+  public static final String ERROR_STRING = "//error";
+
+  /** Field ERROR_HEADER          */
+  public static final String ERROR_HEADER = "\u932f\u8aa4\uff1a";
+
+  /** Field WARNING_HEADER          */
+  public static final String WARNING_HEADER = "\u8b66\u544a\uff1a";
+
+  /** Field XSL_HEADER          */
+  public static final String XSL_HEADER = "XSL ";
+
+  /** Field XML_HEADER          */
+  public static final String XML_HEADER = "XML ";
+
+  /** Field QUERY_HEADER          */
+  public static final String QUERY_HEADER = "PATTERN ";
+
+  /**
+   * Get the association list.
+   *
+   * @return The association list.
+   */
+  public Object[][] getContents()
+  {
+    return contents;
+  }
+}
+
diff --git a/src/trax/trax.properties b/src/trax/trax.properties
deleted file mode 100644
index e593c39..0000000
--- a/src/trax/trax.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-# $Revision$ $Date$
-#
-# Note: This properties file is provided for illustrative purposes
-#       only and is not part of the interface definition.
-#       This properties file is located in the implementation JAR
-#       and different implementations will specify different
-#       implementation classes and output methods.
-#
-
-# The TRaX Stylesheet processor
-trax.processor.xslt=org.apache.xalan.processor.StylesheetProcessor
