<?xml version="1.0" encoding="UTF-8"?>
<!--
  This document provides a schema for representing a request
  for network measurement data. It is based on the draft
  document Requirements for a measurment request
-->
<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">
  <!--
    ##############################################################################
    Included from nm_requestbody.rnc
  -->
  <!--
    ##############################################################################
    Included from nm_subject.rnc
  -->
  <xs:complexType name="Address">
    <xs:sequence>
      <xs:element ref="tns:host"/>
    </xs:sequence>
    <xs:attribute name="version" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>IP version</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element name="host" type="xs:token">
    <xs:annotation>
      <xs:documentation>Host address</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:group name="Node">
    <xs:annotation>
      <xs:documentation>A node with an address. This may also contain a name</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="tns:address"/>
      <xs:group minOccurs="0" ref="tns:Name"/>
    </xs:sequence>
  </xs:group>
  <xs:element name="address" type="tns:Address"/>
  <xs:group name="Name">
    <xs:annotation>
      <xs:documentation>Just a named node. This is just any identifier of an end-host, unique or not.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
    </xs:sequence>
  </xs:group>
  <xs:complexType name="Path">
    <xs:annotation>
      <xs:documentation>A path between two nodes</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="tns:source"/>
      <xs:element ref="tns:destination"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="source">
    <xs:complexType>
      <xs:choice>
        <xs:group ref="tns:Node"/>
        <xs:group ref="tns:Name"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="destination">
    <xs:complexType>
      <xs:choice>
        <xs:group ref="tns:Node"/>
        <xs:group ref="tns:Name"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <!--
    End included from nm_subject.rnc
    ##############################################################################
  -->
  <!--
    ##############################################################################
    Included from nm_params.rnc
  -->
  <xs:complexType name="ParameterSet">
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:duration"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetType"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetSize"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:numPackets"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetSpacing"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:packetGap"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:protocolID"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:tos"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:dscp"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:flowLabel"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:lossThreshold"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:numBytes"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:includesDisk"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:tcpBufferSize"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:tcpType"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:numStreams"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:port"/>
      <xs:element minOccurs="0" ref="tns:other"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="duration">
    <xs:annotation>
      <xs:documentation>The duration of the test</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:double">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetType">
    <xs:annotation>
      <xs:documentation>Type of packets being sent</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetSize">
    <xs:annotation>
      <xs:documentation>Size of packets sent on network</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="numPackets">
    <xs:annotation>
      <xs:documentation>Number of packets sent on network</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetSpacing">
    <xs:annotation>
      <xs:documentation>What algorithm is used to space packets</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="packetGap">
    <xs:annotation>
      <xs:documentation>Time between test packets, in seconds (for periodic tests)</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:double">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="protocolID">
    <xs:annotation>
      <xs:documentation>IP version</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="tos">
    <xs:annotation>
      <xs:documentation>Type of service (IP precedence)</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:short">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="dscp">
    <xs:annotation>
      <xs:documentation>Differentiated services code point</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:byte">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="flowLabel">
    <xs:annotation>
      <xs:documentation>IPv6 option for QoS</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:byte">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="lossThreshold">
    <xs:annotation>
      <xs:documentation>Threshold used to distinguish between a large finite delay and loss</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="numBytes">
    <xs:annotation>
      <xs:documentation>Amount of test traffic</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="includesDisk">
    <xs:annotation>
      <xs:documentation>Are bytes moving memory to memory or disk to disk*</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:boolean">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="tcpBufferSize">
    <xs:annotation>
      <xs:documentation>Size of TCP buffers used</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:ParameterUnits"/>
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="tcpType">
    <xs:annotation>
      <xs:documentation>Reno, Vegas, HSTCP, ScalableTCP, etc</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="numStreams">
    <xs:annotation>
      <xs:documentation>Number of parallel streams</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:unsignedShort">
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="port">
    <xs:annotation>
      <xs:documentation>The port to contact</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:Range"/>
          <xs:attributeGroup ref="tns:ParameterAttributes"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="other" type="tns:Extensibility">
    <xs:annotation>
      <xs:documentation>Additional user-defined parameters</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:attributeGroup name="ParameterAttributes">
    <xs:annotation>
      <xs:documentation>Attributes that apply to all (or nearly all) parameters</xs:documentation>
    </xs:annotation>
    <xs:attributeGroup ref="tns:Required"/>
    <xs:attributeGroup ref="tns:Report"/>
    <xs:attributeGroup ref="tns:Endpoint"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="ParameterUnits">
    <xs:attribute name="units" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>A series of unit names and powers indicating the units of the value</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:attributeGroup>
  <!--
    End included from nm_params.rnc
    ##############################################################################
  -->
  <!--
    ##############################################################################
    Included from nm_tool.rnc
  -->
  <xs:complexType name="Tool">
    <xs:annotation>
      <xs:documentation>The tool and optional command lines to use</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="xs:token"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:major"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:minor"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:release"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:buildDate"/>
      <xs:element minOccurs="0" ref="tns:vendor"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:versionString"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:commandLine"/>
    </xs:sequence>
    <xs:attributeGroup ref="tns:Required"/>
    <xs:attributeGroup ref="tns:Report"/>
  </xs:complexType>
  <xs:element name="major">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:Range"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="minor">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:int">
          <xs:attributeGroup ref="tns:Range"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="release">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:token">
          <xs:attributeGroup ref="tns:Range"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="buildDate">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:date">
          <xs:attributeGroup ref="tns:Range"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="vendor" type="xs:string"/>
  <xs:element name="versionString">
    <xs:complexType mixed="true">
      <xs:attributeGroup ref="tns:Range"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="commandLine" type="tns:ToolCommandLine"/>
  <xs:complexType name="ToolCommandLine">
    <xs:choice minOccurs="0">
      <xs:element maxOccurs="unbounded" ref="tns:arg"/>
      <xs:element ref="tns:line"/>
    </xs:choice>
    <xs:attributeGroup ref="tns:Required"/>
    <xs:attributeGroup ref="tns:Report"/>
    <xs:attributeGroup ref="tns:Endpoint"/>
  </xs:complexType>
  <xs:element name="arg" type="xs:string"/>
  <xs:element name="line" type="xs:string"/>
  <!--
    End included from nm_tool.rnc
    ##############################################################################
  -->
  <!--
    ##############################################################################
    Included from nm_timeinfo.rnc
  -->
  <xs:complexType name="TimeInformation">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="tns:time"/>
      <xs:element ref="tns:plusTimeTolerance"/>
      <xs:element ref="tns:minusTimeTolerance"/>
      <xs:element ref="tns:testingInterval"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="time">
    <xs:annotation>
      <xs:documentation>Measurements should have been measured at or near this time. The value can be "unbounded" or </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:union memberTypes="xs:token xs:double"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="plusTimeTolerance">
    <xs:annotation>
      <xs:documentation>Measurements should have been measured before time + plusTimeTolerance</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:union memberTypes="xs:token xs:double"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="minusTimeTolerance">
    <xs:annotation>
      <xs:documentation>Measurements should have been measured after time - minusTimeTolerance</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:union memberTypes="xs:token xs:double"/>
    </xs:simpleType>
  </xs:element>
  <xs:element name="testingInterval">
    <xs:annotation>
      <xs:documentation>If measurements are being made, this value may be used as a guide to the interval between measurements</xs:documentation>
    </xs:annotation>
    <xs:simpleType>
      <xs:union memberTypes="xs:token xs:double"/>
    </xs:simpleType>
  </xs:element>
  <!--
    End included from nm_timeinfo.rnc
    ##############################################################################
  -->
  <!--
    ##############################################################################
    Included from nm_statistic.rnc
  -->
  <xs:complexType name="Statistics">
    <xs:annotation>
      <xs:documentation>These elements indicate a request for various statistical summaries of data</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" ref="tns:raw"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:count"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:min"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:mean"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:median"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:max"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:stddev"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:percentile"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:confidence"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="raw">
    <xs:annotation>
      <xs:documentation>The interval provides a hint to the service as to the interval between measurements required if it is to make new measurements</xs:documentation>
    </xs:annotation>
    <xs:complexType/>
  </xs:element>
  <xs:element name="count">
    <xs:complexType>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="min">
    <xs:complexType>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="mean">
    <xs:complexType>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="median">
    <xs:complexType>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="max">
    <xs:complexType>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="stddev">
    <xs:complexType>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="percentile">
    <xs:complexType>
      <xs:attribute name="n" use="required" type="xs:double"/>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="confidence">
    <xs:complexType>
      <xs:attribute name="n" use="required" type="xs:double"/>
      <xs:attributeGroup ref="tns:StatisticsAttributes"/>
    </xs:complexType>
  </xs:element>
  <xs:attributeGroup name="StatisticsAttributes">
    <xs:attribute name="interval">
      <xs:annotation>
        <xs:documentation>The interval over which the statistic is generated</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:union memberTypes="xs:token xs:double"/>
      </xs:simpleType>
    </xs:attribute>
    <xs:attributeGroup ref="tns:Required"/>
  </xs:attributeGroup>
  <!--
    End included from nm_statistic.rnc
    ##############################################################################
  -->
  <!--
    ##############################################################################
    Included from nm_extend.rnc
  -->
  <xs:complexType name="Extensibility">
    <xs:sequence>
      <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other" processContents="skip"/>
    </xs:sequence>
  </xs:complexType>
  <!--
    End included from nm_extend.rnc
    ##############################################################################
  -->
  <xs:complexType name="NetworkMeasurementRequest">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" ref="tns:request"/>
    </xs:sequence>
    <xs:attribute name="version" type="xs:token"/>
  </xs:complexType>
  <xs:element name="request" type="tns:Request"/>
  <xs:complexType name="Request">
    <xs:sequence>
      <xs:element ref="tns:characteristic"/>
      <xs:element ref="tns:subject"/>
      <xs:element minOccurs="0" ref="tns:methodology"/>
      <xs:element minOccurs="0" ref="tns:statistics"/>
    </xs:sequence>
    <xs:attribute name="maxResults">
      <xs:annotation>
        <xs:documentation>The maximum number of measurements to be returned</xs:documentation>
      </xs:annotation>
      <xs:simpleType>
        <xs:union memberTypes="xs:token xs:positiveInteger"/>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="allowNewMeasurements" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>If false, new measurements should not be made to satisfy this request</xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="reportEverything" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>If true, everything that can be reported, should be, otherwise individual report attributes are used.</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:element name="characteristic" type="xs:token">
    <xs:annotation>
      <xs:documentation>The requested characteristic</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="subject">
    <xs:annotation>
      <xs:documentation>The subject of the measurement(s) to be returned</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:choice>
        <xs:element ref="tns:node"/>
        <xs:group ref="tns:Name"/>
        <xs:element ref="tns:path"/>
      </xs:choice>
      <xs:attributeGroup ref="tns:Report"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="node">
    <xs:complexType>
      <xs:group ref="tns:Node"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="path" type="tns:Path"/>
  <xs:element name="methodology" type="tns:Methodology">
    <xs:annotation>
      <xs:documentation>The methodology to employ</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="statistics" type="tns:Statistics">
    <xs:annotation>
      <xs:documentation>A request for statistics to be returned</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:complexType name="Methodology">
    <xs:sequence>
      <xs:element minOccurs="0" ref="tns:tool"/>
      <xs:element minOccurs="0" ref="tns:when"/>
      <xs:element minOccurs="0" maxOccurs="unbounded" ref="tns:parameterSet"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="tool" type="tns:Tool">
    <xs:annotation>
      <xs:documentation>The measurement(s) should have been made using this tool, if this element is present</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="when" type="tns:TimeInformation">
    <xs:annotation>
      <xs:documentation>The measurement(s) must have been made in this time period</xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="parameterSet" type="tns:ParameterSet">
    <xs:annotation>
      <xs:documentation>Tool parameters</xs:documentation>
    </xs:annotation>
  </xs:element>
  <!-- This is a global declaration as "required" will be used all over the place -->
  <xs:attributeGroup name="Required">
    <xs:annotation>
      <xs:documentation>If true, the appropriate parameter is required to be the given value. The default is false.</xs:documentation>
    </xs:annotation>
    <xs:attribute name="required" type="xs:boolean"/>
  </xs:attributeGroup>
  <!-- This is a global declaration as "report" will be used all over the place -->
  <xs:attributeGroup name="Report">
    <xs:annotation>
      <xs:documentation>If true, the appropriate parameter should be reported in the response. The default is not(networkMeasurementRequest/request#reportEverything)</xs:documentation>
    </xs:annotation>
    <xs:attribute name="report" type="xs:boolean"/>
  </xs:attributeGroup>
  <!-- This is a global declaration as "range" will be used all over the place -->
  <xs:attributeGroup name="Range">
    <xs:attribute name="range" type="xs:token"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="Endpoint">
    <xs:attribute name="endpoint" type="xs:token"/>
  </xs:attributeGroup>
  <!--
    End included from nm_requestbody.rnc
    ##############################################################################
  -->
  <xs:element name="networkMeasurementRequest" type="tns:NetworkMeasurementRequest"/>
</xs:schema>

