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/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
