<!--
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 XTest cfg 1.0//EN
-->

<!-- DTD for xtest cfg files -->

<!ELEMENT mconfig (testbag+,executor+,compiler*)>
<!ATTLIST mconfig
    name CDATA #REQUIRED
>

<!ELEMENT testbag (testproperty*,testset+)>
<!ATTLIST testbag
    name             CDATA #REQUIRED
    testattribs	     CDATA #REQUIRED
    executor         CDATA #IMPLIED
    compiler         CDATA #IMPLIED
    resultsprocessor CDATA #IMPLIED
>

<!ELEMENT testproperty EMPTY>
<!ATTLIST testproperty
    name  CDATA #REQUIRED
    value CDATA #REQUIRED
>

<!ELEMENT testset (patternset*)>
<!ATTLIST testset
    dir CDATA #REQUIRED
>

<!ELEMENT patternset ((include|exclude)*)>
<!ELEMENT include EMPTY>
<!ATTLIST include 
    name CDATA #REQUIRED
    expectedFail CDATA #IMPLIED
>

<!ELEMENT exclude EMPTY>
<!ATTLIST exclude 
    name CDATA #REQUIRED
>

<!ELEMENT executor EMPTY>
<!ATTLIST executor
    name    CDATA #REQUIRED
    antfile CDATA #IMPLIED
    target  CDATA #IMPLIED
    dir     CDATA #IMPLIED
    default (true|false|yes|no|0|1) "false"
>

<!ELEMENT compiler EMPTY>
<!ATTLIST compiler
    name    CDATA #REQUIRED
    antfile CDATA #IMPLIED
    target  CDATA #IMPLIED
    dir     CDATA #IMPLIED
    default (true|false|yes|no|0|1) "false"
>
