<?xml encoding="UTF-8" ?>
<!--
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.


The contents of this file are subject to the terms of either the GNU
General Public License Version 2 only ("GPL") or the Common
Development and Distribution License("CDDL") (collectively, the
"License"). You may not use this file except in compliance with the
License. You can obtain a copy of the License at
https://netbeans.org/cddl-gplv2.html
or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
specific language governing permissions and limitations under the
License.  When distributing the software, include this License Header
Notice in each file and include the License file at
nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
particular file as subject to the "Classpath" exception as provided
by Sun in the GPL Version 2 section of the License file that
accompanied this code. If applicable, add the following below the
License Header, with the fields enclosed by brackets [] replaced by
your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"

Contributor(s):

The Original Software is NetBeans. The Initial Developer of the Original
Software is Sun Microsystems, Inc. Portions Copyright 2002 Sun
Microsystems, Inc. All Rights Reserved.

If you wish your version of this file to be governed by only the CDDL
or only the GPL Version 2, indicate your decision by adding
"[Contributor] elects to include this software in this distribution
under the [CDDL or GPL Version 2] license." If you do not indicate a
single choice of license, a recipient has the option to distribute
your version of this file under either the CDDL, the GPL Version 2 or
to extend the choice of license to its licensees as provided above.
However, if you add GPL Version 2 code and therefore, elected the GPL
Version 2 license, then the option applies only if the new code is
made subject to such option by the copyright holder.
-->

<!ELEMENT java (
    object   | 
    void     | 
    string   |  
    class    | 
    null     | 
    array    | 
    boolean  | 
    byte     | 
    char     | 
    short    | 
    int      | 
    long     | 
    float    |  
    double
)*>
<!ATTLIST java 
    version  CDATA  #IMPLIED
    class    CDATA  #IMPLIED
>

<!ELEMENT boolean (#PCDATA)>
<!ELEMENT byte    (#PCDATA)>
<!ELEMENT char    (#PCDATA)>
<!ELEMENT short   (#PCDATA)>
<!ELEMENT int     (#PCDATA)>
<!ELEMENT long    (#PCDATA)>
<!ELEMENT float   (#PCDATA)>
<!ELEMENT double  (#PCDATA)>

<!ELEMENT string  (#PCDATA)>
<!ELEMENT class   (#PCDATA)>
<!ELEMENT null    (#PCDATA)>

<!ELEMENT object (
    object   | 
    void     | 
    string   |  
    class    | 
    null     | 
    array    | 
    boolean  | 
    byte     | 
    char     | 
    short    | 
    int      | 
    long     | 
    float    |  
    double
)*>
<!ATTLIST object 
    id       ID     #IMPLIED
    idref    IDREF  #IMPLIED
    class    CDATA  #IMPLIED
    field    CDATA  #IMPLIED
    method   CDATA  #IMPLIED
    property CDATA  #IMPLIED
    index    CDATA  #IMPLIED
>

<!ELEMENT array (
    object   | 
    void     | 
    string   |  
    class    | 
    null     | 
    array    | 
    boolean  | 
    byte     | 
    char     | 
    short    | 
    int      | 
    long     | 
    float    |  
    double
)*>
<!ATTLIST array 
    id       ID     #IMPLIED
    class    CDATA  #IMPLIED
    length   CDATA  #IMPLIED
>

<!ELEMENT void (
    object   | 
    void     | 
    string   |  
    class    | 
    null     | 
    array    | 
    boolean  | 
    byte     | 
    char     | 
    short    | 
    int      | 
    long     | 
    float    |  
    double
)*>
<!ATTLIST void 
    id       ID     #IMPLIED
    class    CDATA  #IMPLIED
    method   CDATA  #IMPLIED
    property CDATA  #IMPLIED
    index    CDATA  #IMPLIED
>




