<!--
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 DefaultAttributes 1.0//EN -->
<!-- XML representation of DefaultAttributes -->
<!-- as for example a module layer. -->
<!-- See: org.openide.filesystems.DefaultAttributes -->
<!ELEMENT attributes (fileobject)*>
<!ATTLIST attributes version CDATA #REQUIRED>
<!ELEMENT fileobject (attr)*>
<!ATTLIST fileobject name CDATA #REQUIRED>
<!ELEMENT attr EMPTY>
<!ATTLIST attr name CDATA #REQUIRED>
<!ATTLIST attr bytevalue CDATA #IMPLIED>
<!ATTLIST attr shortvalue CDATA #IMPLIED>
<!ATTLIST attr intvalue CDATA #IMPLIED>
<!ATTLIST attr longvalue CDATA #IMPLIED>
<!ATTLIST attr floatvalue CDATA #IMPLIED>
<!ATTLIST attr doublevalue CDATA #IMPLIED>
<!ATTLIST attr boolvalue CDATA #IMPLIED>
<!ATTLIST attr charvalue CDATA #IMPLIED>
<!ATTLIST attr stringvalue CDATA #IMPLIED>
<!ATTLIST attr methodvalue CDATA #IMPLIED>
<!ATTLIST attr serialvalue CDATA #IMPLIED>
<!ATTLIST attr urlvalue CDATA #IMPLIED>
