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..44d5636 100644
--- a/src/org/apache/xalan/xsltc/compiler/XSLTC.java
+++ b/src/org/apache/xalan/xsltc/compiler/XSLTC.java
@@ -165,10 +165,10 @@
     /**
      * Only for user by the internal TrAX implementation.
      */
-    public void setParser(Parser parser) {
-	_parser = parser;
+    public Parser getParser() {
+        return _parser;
     }
-
+ 
     /**
      * Only for user by the internal TrAX implementation.
      */
diff --git a/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java b/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
index c9058c4..44ed3cc 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.
@@ -99,29 +108,26 @@
      * object belongs to.
      */
     private TransformerFactoryImpl _tfactory = null;
+    
+    /**
+     * A reference to XSLTC's parser object.
+     */
+    private Parser _parser = null;
 
     /**
      * Default constructor
      */
-    protected TemplatesHandlerImpl(int indentNumber, 
-	TransformerFactoryImpl tfactory) 
+    protected TemplatesHandlerImpl(int indentNumber,
+	TransformerFactoryImpl tfactory)
     {
-	super(null);
 	_indentNumber = indentNumber;
 	_tfactory = tfactory;
-    }
-
-    /**
-     * Internal initialization
-     */
-    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);
+    
+        // Initialize a parser object
+        XSLTC xsltc = new XSLTC();
+        xsltc.init();
+        xsltc.setOutputType(XSLTC.BYTEARRAY_OUTPUT);
+        _parser = xsltc.getParser();
     }
 
     /**
@@ -162,7 +168,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 +189,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 +239,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 +260,89 @@
 	}
 	return null;
     }
+    
+    // -- ContentHandler --------------------------------------------------
+    
+    /**
+     * Re-initialize parser and forward SAX2 event.
+     */
+    public void startDocument() {
+        _parser.init();
+        _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..b849cfe 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));
+          }
         }
       }
       
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
