<?xml version="1.0" encoding="UTF-8"?>
<!-- Faults -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring" xmlns:tns="http://www.ggf.org/namespaces/2004/10/gridNetworkMonitoring">
  <xs:include schemaLocation="nm_requestbody.xsd"/>
  <xs:element name="nmwgFault">
    <xs:complexType>
      <xs:choice>
        <xs:group ref="tns:NoDataFault"/>
        <xs:group ref="tns:CommunicationFault"/>
        <xs:group ref="tns:SystemFault"/>
        <xs:group ref="tns:AuthorisationFault"/>
        <xs:group ref="tns:RequestFault"/>
        <xs:group ref="tns:DiscoveryFault"/>
        <xs:group ref="tns:TryAgainFault"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:group name="NMWGFault">
    <xs:annotation>
      <xs:documentation>All NMWGFaults must contain this elements</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="tns:code"/>
        <xs:element ref="tns:message"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:element name="code" type="xs:positiveInteger"/>
  <xs:element name="message">
    <xs:complexType mixed="true">
      <xs:attribute name="lang" use="required" type="xs:token"/>
    </xs:complexType>
  </xs:element>
  <xs:group name="NoDataFault">
    <xs:sequence>
      <xs:group ref="tns:NMWGFault"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="CommunicationFault">
    <xs:sequence>
      <xs:group ref="tns:NMWGFault"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="SystemFault">
    <xs:sequence>
      <xs:group ref="tns:NMWGFault"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="AuthorisationFault">
    <xs:sequence>
      <xs:group ref="tns:NMWGFault"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="RequestFault">
    <xs:sequence>
      <xs:group ref="tns:NMWGFault"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="DiscoveryFault">
    <xs:sequence>
      <xs:group ref="tns:NMWGFault"/>
    </xs:sequence>
  </xs:group>
  <xs:group name="TryAgainFault">
    <xs:annotation>
      <xs:documentation>When instructed to try again, a client should wait for the specified delay before presenting another request.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="tns:NMWGFault"/>
        <xs:element ref="tns:delay"/>
        <xs:element ref="tns:usingRequest"/>
      </xs:choice>
    </xs:sequence>
  </xs:group>
  <xs:element name="delay" type="xs:double">
    <xs:annotation>
      <xs:documentation>Wait this many seconds before trying again.</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="usingRequest">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="tns:networkMeasurementRequest"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="networkMeasurementRequest" type="tns:NetworkMeasurementRequest"/>
</xs:schema>

