<!--***********************************************************
 *
 * 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.
 *
 ***********************************************************-->
<!ELEMENT results ( document+ ) >
<!ATTLIST results generated-by NMTOKEN #REQUIRED >
<!ATTLIST results version CDATA #REQUIRED >
<!ATTLIST results timestamp CDATA #REQUIRED >
<!ATTLIST results type NMTOKEN #REQUIRED >

<!ELEMENT document ( references?, issues? ) >
<!ATTLIST document location CDATA #REQUIRED >
<!ATTLIST document application CDATA #REQUIRED >
<!ATTLIST document issues-count CDATA #IMPLIED >
<!ATTLIST document pages CDATA #REQUIRED >
<!ATTLIST document created CDATA #REQUIRED >
<!ATTLIST document modified CDATA #REQUIRED >
<!ATTLIST document accessed CDATA #REQUIRED >
<!ATTLIST document printed CDATA #REQUIRED >
<!ATTLIST document last-save-by CDATA #REQUIRED >
<!ATTLIST document revision CDATA #REQUIRED >
<!ATTLIST document based-on-template CDATA #REQUIRED >

<!ELEMENT references ( reference+ ) >

<!ELEMENT reference EMPTY >
<!ATTLIST reference name CDATA #REQUIRED >
<!ATTLIST reference description CDATA #REQUIRED >
<!ATTLIST reference location CDATA #REQUIRED >
<!ATTLIST reference type CDATA #REQUIRED >
<!ATTLIST reference GUID CDATA #IMPLIED >
<!ATTLIST reference is-broken CDATA #REQUIRED >
<!ATTLIST reference builtin CDATA #REQUIRED >


<!ELEMENT issues ( issue+ ) >

<!ELEMENT issue ( location, details+ ) >
<!ATTLIST issue category CDATA #REQUIRED >
<!ATTLIST issue type CDATA #REQUIRED >
<!ATTLIST issue prepared CDATA #REQUIRED >

<!ELEMENT location ( property* ) >
<!ATTLIST location type CDATA #REQUIRED >

<!ELEMENT details ( (property+), (property | note)* ) >

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

<!ELEMENT note EMPTY >
<!ATTLIST note index CDATA #REQUIRED >
<!ATTLIST note value CDATA #REQUIRED >
