<!--
  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.
-->
<!-- $Id: $ -->
<!ELEMENT disabled-testcases (testcase)*>
<!ELEMENT testcase (name?,file,description?,reference*)>
<!ATTLIST testcase id ID #IMPLIED>
<!-- Testcase name. Can be used as title in a webpage. -->
<!ELEMENT name (#PCDATA)>
<!-- Testcase file. Used for filtering file names, obviously. -->
<!ELEMENT file (#PCDATA)>
<!-- Testcase description. Either text, one paragraph, or HTML markup (block level). -->
<!ELEMENT description ANY>
<!-- A single reference. Should be an URL. -->
<!ELEMENT reference (#PCDATA)>