<!--
The contents of this file are subject to the terms of the Common Development
and Distribution License (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.html
or https://netbeans.org/cddl.txt.

When distributing Covered Code, include this CDDL Header Notice in each file
and include the License file at https://netbeans.org/cddl.txt.
If applicable, add the following below the CDDL Header, with the fields
enclosed by brackets [] replaced by your own identifying information:
"Portions Copyrighted [year] [name of copyright owner]"

The Original Software is NetBeans. The Initial Developer of the Original
Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
Microsystems, Inc. All Rights Reserved.
-->

<!--
-//NetBeans//DTD Group Properties 2.0//EN
-->

<!-- The root element for group properties. Consists of subelements
     for specific properties.
     Attribute "version" is versioning attribute which in fact specifies
     version of this DTD. Attribute is used to perform simple versioning
     without the need to use time-consuming xml validation using this DTD.
-->
<!ELEMENT group (module?, name, state) >
<!ATTLIST group
    version CDATA #REQUIRED
>

<!-- Optional element for module information. Attribute name specifies name of
    module which defines this xml description. Module information is used for
    automatic removal of top component reference defined by module if module
    is disabled.
    If you want your module's group to be removed
    automatically when your module is disabled, fill this element.
    When this element is missing, no automatic removal will be done.
 1) "name" code name of the module, can be either base code name or full code
    name with slash and release number. Examples for core module are: 
    "org.netbeans.core" or "org.netbeans.core/1"
 2) "spec" is specification version of the module which defines this xml description.
-->
<!ELEMENT module EMPTY >
<!ATTLIST module
    name CDATA #REQUIRED
    spec CDATA #IMPLIED
>

<!-- Element name
    "unique" represents unique name of group
-->
<!ELEMENT name      EMPTY >
<!ATTLIST name
    unique   CDATA        #REQUIRED
>

<!-- Element state describes state of group.
    "opened" is flag describing if group is opened or not. "true" if group is opened,
    "false" if group is closed.
-->
<!ELEMENT state      EMPTY >
<!ATTLIST state
    opened (true | false) #REQUIRED
>
