<?xml version='1.0' encoding='UTF-8'?>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
-->
<!DOCTYPE s1 SYSTEM 'dtd/document.dtd'>
<s1 title='Limitations'>
 <s2 title='Known Limitations'>
  <p>
   This is a list of the limitations in this release of &ParserName;.
   There is also a list of <link idref='xml-schema'>
   XML Schema Limitations</link>.
  </p>
  <ul>
   <li>
    Due to a transcoding bug in the Sun JDK's (1.1.6, 1.1.7, 1.1.8, 1.2)
    handling of EBCDIC data (specifically, end of line characters), you 
    must use IBM's JDK 1.1.6, if you want to use EBCDIC support. The IBM 
    JDK has the bug fixed.  We don't know when the bug fix will get into 
    the Sun JDKs.
   </li>
  </ul>
 </s2>
</s1>
