<?xml version="1.0" ?>
<!--
        Copyright (c) 2004 on behalf of the EU EGEE Project:
        The European Organization for Nuclear Research (CERN),
        Istituto Nazionale di Fisica Nucleare (INFN), Italy
        Datamat Spa, Italy
        Centre National de la Recherche Scientifique (CNRS), France
        CS Systeme d'Information (CSSI), France
        Royal Institute of Technology, Center for Parallel Computers (KTH-PDC), Sweden
        Universiteit van Amsterdam (UvA), Netherlands
        University of Helsinki (UH.HIP), Finland
        University of Bergen (UiB), Norway
        Council for the Central Laboratory of the Research Councils (CCLRC), United Kingdom

        XML Schema to validate the output of XUnit frameworks 

        Authors: David Collados <david.collados@cern.ch>

SOURCE: http://jra1mw.cvs.cern.ch:8180/cgi-bin/jra1mw.cgi/org.glite.testing.unit/config/JUnitXSchema.xsd
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:targetNamespace="http://www.eu-egee.org/gLite/Tools/Testing">

  <xsd:annotation>
    <xsd:documentation xml:lang="en"> 
      XML Schema for XUnit tests output
    </xsd:documentation>
  </xsd:annotation>

  <xsd:element name="testsuite">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="properties" type="propertiesType" minOccurs="0" maxOccurs="unbounded" />
        <xsd:element name="testcase"   type="testCaseType"   minOccurs="1" maxOccurs="unbounded" />
        <xsd:element name="system-out" type="xsd:string"     minOccurs="1" maxOccurs="1" />
        <xsd:element name="system-err" type="xsd:string"     minOccurs="1" maxOccurs="1" />
      </xsd:sequence>
      <xsd:attribute name="name"     type="xsd:string" />
      <xsd:attribute name="tests"    type="xsd:integer" />
      <xsd:attribute name="failures" type="xsd:integer" />
      <xsd:attribute name="errors"   type="xsd:integer" />
      <xsd:attribute name="time"     type="xsd:float" />
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="propertiesType">
    <xsd:sequence>
      <xsd:element name="property" type="propertyType" minOccurs="0" maxOccurs="unbounded" />
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="propertyType">
    <xsd:attribute name="name"  type="xsd:string" />
    <xsd:attribute name="value" type="xsd:string" />
  </xsd:complexType>

  <xsd:complexType name="testCaseType">
    <xsd:sequence>
      <xsd:element name="failure" type="failureType" minOccurs="0" maxOccurs="1" />
      <xsd:element name="error"   type="errorType"   minOccurs="0" maxOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="classname" type="xsd:string" />
    <xsd:attribute name="name"      type="xsd:string" />
    <xsd:attribute name="time"      type="xsd:float" />
  </xsd:complexType>

  <xsd:complexType name="failureType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="type"    type="xsd:string" />
        <xsd:attribute name="message" type="xsd:string" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:complexType name="errorType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:attribute name="type"    type="xsd:string" />
        <xsd:attribute name="message" type="xsd:string" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
</xsd:schema>
