<?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Paul Mealor (University College London) --><xs:schema targetNamespace="http://www.ggf.org/namespaces/2003/11/DEMO/gridNetworkMonitoring" xmlns:tns="http://www.ggf.org/namespaces/2003/11/DEMO/gridNetworkMonitoring" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">	<xs:element name="NetworkMeasurementRequest">		<xs:annotation>			<xs:documentation>The root element of a request for a network measurement</xs:documentation>		</xs:annotation>		<xs:complexType>			<xs:sequence>				<xs:element name="subject" type="tns:NetworkEntityType"/>				<xs:element name="time" type="tns:TimeInformationType"/>				<xs:element name="characteristic">					<xs:complexType mixed="true">						<xs:simpleContent>							<xs:extension base="tns:CharacteristicType"/>						</xs:simpleContent>					</xs:complexType>				</xs:element>				<xs:element name="methodology" type="tns:MethodologyType" minOccurs="0"/>				<xs:element name="statistics" type="tns:StatisticsType" minOccurs="0"/>			</xs:sequence>		</xs:complexType>	</xs:element>	<xs:complexType name="TimeInformationType">		<xs:annotation>			<xs:documentation>The root element of a request</xs:documentation>		</xs:annotation>		<xs:choice>			<xs:sequence>				<xs:annotation>					<xs:documentation>This request is for values between startTime and endTime</xs:documentation>				</xs:annotation>				<xs:element ref="tns:startTime" minOccurs="0"/>				<xs:element ref="tns:endTime" minOccurs="0"/>				<xs:element ref="tns:testingInterval" minOccurs="0"/>			</xs:sequence>			<xs:sequence>				<xs:annotation>					<xs:documentation>This request is for values with timeTolerance of time</xs:documentation>				</xs:annotation>				<xs:element ref="tns:time" minOccurs="0"/>				<xs:element ref="tns:timeTolerance" minOccurs="0"/>			</xs:sequence>		</xs:choice>	</xs:complexType>	<xs:element name="startTime" type="tns:TimeType">		<xs:annotation>			<xs:documentation>Seconds since the Unix epoch.</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="endTime" type="tns:TimeType">		<xs:annotation>			<xs:documentation>Seconds since the Unix epoch.</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="testingInterval" type="tns:TimeIntervalType">		<xs:annotation>			<xs:documentation>The interval between measurements to be returned</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="time" type="tns:TimeType">		<xs:annotation>			<xs:documentation>Seconds since the Unix epoch.</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="timeTolerance" type="tns:TimeIntervalType" default="unbounded">		<xs:annotation>			<xs:documentation>A tolerance in seconds.</xs:documentation>		</xs:annotation>	</xs:element>	<xs:complexType name="CharacteristicType">		<xs:annotation>			<xs:documentation>The name of the characteristic requested</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:token"/>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="MethodologyType">		<xs:annotation>			<xs:documentation>A collections of parameterSets</xs:documentation>		</xs:annotation>		<xs:sequence>			<xs:element name="parameters" type="tns:ParameterSetType" minOccurs="0" maxOccurs="unbounded"/>		</xs:sequence>	</xs:complexType>	<xs:complexType name="StatisticsType">		<xs:annotation>			<xs:documentation>Requested statistics</xs:documentation>		</xs:annotation>		<xs:sequence>			<xs:element ref="tns:statistic" minOccurs="0" maxOccurs="unbounded"/>			<xs:element name="interval" type="tns:TimeIntervalType" minOccurs="0">				<xs:annotation>					<xs:documentation>The statistics should be derived from all the measurements in this time interval. If this is omitted, one summary should be returned.</xs:documentation>				</xs:annotation>			</xs:element>		</xs:sequence>	</xs:complexType>	<!--Parameter building-block types-->	<!--<xs:element name="parameterSet" type="tns:ParameterSetType" abstract="true">		<xs:annotation>			<xs:documentation>Substitution group for settings</xs:documentation>		</xs:annotation>	</xs:element>-->	<xs:complexType name="ParameterSetType" abstract="true">		<xs:annotation>			<xs:documentation>A generic, abstract set of parameters.</xs:documentation>		</xs:annotation>	</xs:complexType>	<xs:simpleType name="ParameterUseType">		<xs:annotation>			<xs:documentation>An enumeration of the available types of parameter use</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:string">			<xs:enumeration value="optional">				<xs:annotation>					<xs:documentation>The value or range requested should be used if possible, or the nearest available value should be used. If the parameter is "nil", then the service implementation default should be used.</xs:documentation>				</xs:annotation>			</xs:enumeration>			<xs:enumeration value="required">				<xs:annotation>					<xs:documentation>The requested value or range should be used. If that value is not available, no measurements should be attempted or returned.</xs:documentation>				</xs:annotation>			</xs:enumeration>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="ParameterRangeType">		<xs:annotation>			<xs:documentation>Exact means that the parameter must be exactly the given value, minimum and maximum allow the parameter to have a range of values</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:string">			<xs:enumeration value="exact">				<xs:annotation>					<xs:documentation>The request is for a parameter value exactly equal to the one given.</xs:documentation>				</xs:annotation>			</xs:enumeration>			<xs:enumeration value="minimum">				<xs:annotation>					<xs:documentation>The parameter value should be at least equal to the given value</xs:documentation>				</xs:annotation>			</xs:enumeration>			<xs:enumeration value="maximum">				<xs:annotation>					<xs:documentation>The parameter value should be at most equal to the given value</xs:documentation>				</xs:annotation>			</xs:enumeration>		</xs:restriction>	</xs:simpleType>	<xs:attributeGroup name="ParameterAttributesGroup">		<xs:annotation>			<xs:documentation>The attributes required by all Parameter types</xs:documentation>		</xs:annotation>		<xs:attribute name="use" type="tns:ParameterUseType" use="optional" default="optional"/>		<xs:attribute name="report" type="xs:boolean" use="optional" default="false"/>		<xs:attribute name="range" type="tns:ParameterRangeType" use="optional" default="exact"/>	</xs:attributeGroup>	<!--These are just convenience types. Some of the (especially "complex") Parameters are not based on these types-->	<xs:complexType name="DoubleParameterType">		<xs:annotation>			<xs:documentation>A parameter with type double</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:double">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="IntegerParameterType">		<xs:annotation>			<xs:documentation>A parameter with type int</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:int">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="StringParameterType">		<xs:annotation>			<xs:documentation>A parameter with type string</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:string">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="TokenParameterType">		<xs:annotation>			<xs:documentation>A parameter with type token</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:token">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="ShortParameterType">		<xs:annotation>			<xs:documentation>A parameter with type short</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:short">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="ByteParameterType">		<xs:annotation>			<xs:documentation>A parameter with type byte</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:byte">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<xs:complexType name="BooleanParameterType">		<xs:annotation>			<xs:documentation>A parameter with type boolean</xs:documentation>		</xs:annotation>		<xs:simpleContent>			<xs:extension base="xs:boolean">				<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>			</xs:extension>		</xs:simpleContent>	</xs:complexType>	<!--IP settings-->	<!--<xs:element name="ipParameterSet" type="tns:IPParameterSetType" substitutionGroup="tns:parameterSet">		<xs:annotation>			<xs:documentation>Parameters for the IP layer</xs:documentation>		</xs:annotation>	</xs:element>-->	<xs:complexType name="IPParameterSetType">		<xs:annotation>			<xs:documentation>Parameters for the IP layer</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:ParameterSetType">				<xs:sequence>					<xs:element name="duration" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The duration of the test</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" use="optional" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="packetType" type="tns:TokenParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>ICMP or UDP or TCP (is this information implied by having a tcpParameterSet element, say?)</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="packetSize" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Size of packets sent on network</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="numPackets" type="tns:IntegerParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Number of packets sent on network</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="packetSpacing" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>What algorithm is used to space packets (poisson or periodic)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:restriction base="tns:TokenParameterType">									<xs:enumeration value="periodic"/>									<xs:enumeration value="poisson"/>								</xs:restriction>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="packetGap" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Time between test packets, in seconds (for periodic tests)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" default="s"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="protocolID" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>IP version (this information is also available as an attribute of the IPAddress, do we need it both places?)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:restriction base="tns:TokenParameterType">									<xs:enumeration value="IPv4"/>									<xs:enumeration value="IPv6"/>								</xs:restriction>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="typeOfService" type="tns:ShortParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Type of service (IP precedence) IPv4 only?</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="dscp" type="tns:ByteParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>differentiated services code point</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="flowLabel" type="tns:ByteParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>IP v6 option for QoS</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="lossThreshold" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The threshold used to distinguish between a large finite delay and loss </xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="numBytes" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Amount of test traffic</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="includesDisk" type="tns:BooleanParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Are bytes moving memory to memory or disk to disk?</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="numStreams" type="tns:IntegerParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Number of parallel streams</xs:documentation>						</xs:annotation>					</xs:element>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<!--TCP settings-->	<!--<xs:element name="tcpParameterSet" type="tns:TCPParameterSetType" substitutionGroup="tns:parameterSet">		<xs:annotation>			<xs:documentation>Parameters for the TCP layer</xs:documentation>		</xs:annotation>	</xs:element>-->	<xs:complexType name="TCPParameterSetType">		<xs:annotation>			<xs:documentation>Parameters for the TCP layer</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:ParameterSetType">				<xs:sequence>					<xs:element name="duration" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The duration of the test</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" use="optional" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="packetSize" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Size of packets sent on network</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="numPackets" type="tns:IntegerParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Number of packets sent on network</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="packetSpacing" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>What algorithm is used to space packets (poisson or periodic)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:restriction base="tns:TokenParameterType">									<xs:enumeration value="periodic"/>									<xs:enumeration value="poisson"/>								</xs:restriction>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="packetGap" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Time between test packets, in seconds (for periodic tests)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" default="s"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="lossThreshold" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The threshold used to distinguish between a large finite delay and loss </xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="numBytes" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Amount of test traffic</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="includesDisk" type="tns:BooleanParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Are bytes moving memory to memory or disk to disk?</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="tcpBufferSize" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Size of TCP buffers used</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="tcpType" type="tns:TokenParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Reno, Vegas, HSTCP, ScalableTCP, etc</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="numStreams" type="tns:IntegerParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Number of parallel streams</xs:documentation>						</xs:annotation>					</xs:element>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<!--ICMP Settings-->	<!--<xs:element name="icmpParameterSet" type="tns:ICMPParameterSetType" substitutionGroup="tns:parameterSet">		<xs:annotation>			<xs:documentation>Parameters for the ICMP layer</xs:documentation>		</xs:annotation>	</xs:element>-->	<xs:complexType name="ICMPParameterSetType">		<xs:annotation>			<xs:documentation>Parameters for the ICMP layer</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:ParameterSetType">				<xs:sequence>					<xs:element name="duration" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The duration of the test</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" use="optional" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="packetSize" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Size of packets sent on network</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="numPackets" type="tns:IntegerParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Number of packets sent on network</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="packetSpacing" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>What algorithm is used to space packets (poisson or periodic)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:restriction base="tns:TokenParameterType">									<xs:enumeration value="periodic"/>									<xs:enumeration value="poisson"/>								</xs:restriction>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="packetGap" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Time between test packets, in seconds (for periodic tests)</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" default="s"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="lossThreshold" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The threshold used to distinguish between a large finite delay and loss </xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="numBytes" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Amount of test traffic</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:IntegerParameterType">									<xs:attribute name="units" type="xs:token" default="bytes"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<!--Application settings-->	<!--<xs:element name="applicationParameterSet" type="tns:ApplicationParameterSetType" substitutionGroup="tns:parameterSet">		<xs:annotation>			<xs:documentation>Parameters for the application layer</xs:documentation>		</xs:annotation>	</xs:element>-->	<xs:complexType name="ApplicationParameterSetType">		<xs:annotation>			<xs:documentation>Parameters for the application layer</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:ParameterSetType">				<xs:sequence>					<xs:element name="duration" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The duration of the test</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:simpleContent>								<xs:extension base="tns:DoubleParameterType">									<xs:attribute name="units" type="xs:token" use="optional" default="seconds"/>								</xs:extension>							</xs:simpleContent>						</xs:complexType>					</xs:element>					<xs:element name="includesDisk" type="tns:BooleanParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Are bytes moving memory to memory or disk to disk?</xs:documentation>						</xs:annotation>					</xs:element>					<xs:element name="trafficPattern" type="tns:TokenParameterType" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>The type of traffic pattern, for example, H323 to emulate video conferencing</xs:documentation>						</xs:annotation>					</xs:element>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<!--Tool settings-->	<!--<xs:element name="toolParameterSet" type="tns:ToolParameterSetType" substitutionGroup="tns:parameterSet">		<xs:annotation>			<xs:documentation>Parameters related to which tool to use</xs:documentation>		</xs:annotation>	</xs:element>-->	<xs:complexType name="ToolParameterSetType">		<xs:annotation>			<xs:documentation>Parameters related to which tool to use</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:ParameterSetType">				<xs:sequence>					<xs:element name="tool" nillable="true" minOccurs="0" maxOccurs="unbounded">						<xs:annotation>							<xs:documentation>Description of the tool to use</xs:documentation>						</xs:annotation>						<xs:complexType>							<xs:sequence>								<xs:element name="name" type="xs:token">									<xs:annotation>										<xs:documentation>The name of the tool</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="major" type="xs:integer" minOccurs="0">									<xs:annotation>										<xs:documentation>The major version number requested</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="minor" type="xs:integer" minOccurs="0">									<xs:annotation>										<xs:documentation>The minor version number requested</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="release" type="xs:integer" minOccurs="0">									<xs:annotation>										<xs:documentation>The release number of the tool</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="buildDate" type="xs:date" minOccurs="0">									<xs:annotation>										<xs:documentation>The build date of the tool</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="vendor" type="xs:string" minOccurs="0">									<xs:annotation>										<xs:documentation>The vendor who produced the tool</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="versionString" type="xs:string" minOccurs="0" maxOccurs="unbounded">									<xs:annotation>										<xs:documentation>Any versioning information that does not fit elsewhere</xs:documentation>									</xs:annotation>								</xs:element>								<xs:element name="sourceCommandLine" minOccurs="0">									<xs:annotation>										<xs:documentation>The command line arguments to provide to the tool. This can either consist of a series of arg elements each representing a single argument, or a line element, which will be split by spaces and passed to the command.</xs:documentation>									</xs:annotation>									<xs:complexType>										<xs:choice>											<xs:sequence>												<xs:element name="arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>											</xs:sequence>											<xs:element name="line" type="xs:string"/>										</xs:choice>										<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>									</xs:complexType>								</xs:element>								<xs:element name="destinationCommandLine" minOccurs="0">									<xs:annotation>										<xs:documentation>The command line arguments to provide to the tool. This can either consist of a series of arg elements each representing a single argument, or a line element, which will be split by spaces and passed to the command.</xs:documentation>									</xs:annotation>									<xs:complexType>										<xs:choice>											<xs:sequence>												<xs:element name="arg" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>											</xs:sequence>											<xs:element name="line" type="xs:string"/>										</xs:choice>									</xs:complexType>								</xs:element>							</xs:sequence>							<xs:attributeGroup ref="tns:ParameterAttributesGroup"/>						</xs:complexType>					</xs:element>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<!--Network Topology types-->	<xs:complexType name="NetworkEntityType" abstract="true">		<xs:annotation>			<xs:documentation>Base class for any network entity, such as a host, router or path</xs:documentation>		</xs:annotation>	</xs:complexType>	<xs:complexType name="NetworkPathType">		<xs:annotation>			<xs:documentation>Path between a network source and destination node</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:NetworkEntityType">				<xs:sequence>					<xs:element name="source" type="tns:NetworkEntityType" minOccurs="0"/>					<xs:element name="destination" type="tns:NetworkEntityType" minOccurs="0"/>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<xs:complexType name="NodeType">		<xs:annotation>			<xs:documentation>A network node</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:NetworkEntityType">				<xs:sequence>					<xs:element name="name" type="xs:string" minOccurs="0"/>					<xs:element name="address" type="tns:NetworkAddressType"/>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<xs:complexType name="NamedNodeType" abstract="false">		<xs:annotation>			<xs:documentation>A node that is identified by a name alone</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:NetworkEntityType">				<xs:sequence>					<xs:element name="name" type="xs:string"/>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<xs:complexType name="NetworkAddressType" abstract="true">		<xs:annotation>			<xs:documentation>Abstract network address</xs:documentation>		</xs:annotation>	</xs:complexType>	<xs:complexType name="IPAddressType">		<xs:annotation>			<xs:documentation>Internet Protocol address</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:NetworkAddressType">				<xs:sequence>					<xs:element name="IP" type="xs:string"/>					<xs:element name="port" type="xs:int" minOccurs="0"/>				</xs:sequence>				<xs:attribute name="version" type="xs:token" default="4">					<xs:annotation>						<xs:documentation>Internet Protocol version (4 or 6)</xs:documentation>					</xs:annotation>				</xs:attribute>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<xs:complexType name="DNSAddressType">		<xs:annotation>			<xs:documentation>A DNS name address</xs:documentation>		</xs:annotation>		<xs:complexContent>			<xs:extension base="tns:NetworkAddressType">				<xs:sequence>					<xs:element name="name" type="xs:string"/>					<xs:element name="port" type="xs:int" minOccurs="0"/>				</xs:sequence>			</xs:extension>		</xs:complexContent>	</xs:complexType>	<!--Statistics stuff-->	<xs:complexType name="StatisticType">		<xs:annotation>			<xs:documentation>The type of the statistic element</xs:documentation>		</xs:annotation>		<xs:attribute name="sampleInterval" type="tns:TimeIntervalType" use="optional" default="unbounded">			<xs:annotation>				<xs:documentation>An indication of the length of time for which statistics are calculated. If ommitted or left "unbounded", the statistic will be calculated over every raw data point requested.</xs:documentation>			</xs:annotation>		</xs:attribute>	</xs:complexType>	<xs:element name="statistic" type="tns:StatisticType" abstract="true">		<xs:annotation>			<xs:documentation>Head of the statistics substitution group</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="count" type="tns:StatisticType" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request a count of the measured values</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="min" type="tns:StatisticType" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the minimum measured value</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="max" type="tns:StatisticType" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the maximum measured value</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="mean" type="tns:StatisticType" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the mean of the measured values</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="median" type="tns:StatisticType" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the median measured value</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="stddev" type="tns:StatisticType" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the standard deviation of the measured values</xs:documentation>		</xs:annotation>	</xs:element>	<xs:element name="percentile" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the nth-percentile of the measured values. Default n=95%</xs:documentation>		</xs:annotation>		<xs:complexType>			<xs:complexContent>				<xs:extension base="tns:StatisticType">					<xs:attribute name="pct" type="xs:double" use="optional" default="95"/>				</xs:extension>			</xs:complexContent>		</xs:complexType>	</xs:element>	<xs:element name="confidence" substitutionGroup="tns:statistic">		<xs:annotation>			<xs:documentation>Request the +/-n% confidence interval. Default n=95%</xs:documentation>		</xs:annotation>		<xs:complexType>			<xs:complexContent>				<xs:extension base="tns:StatisticType">					<xs:attribute name="confidence" type="xs:double" use="optional" default="95"/>				</xs:extension>			</xs:complexContent>		</xs:complexType>	</xs:element>	<!--Utility types-->	<xs:simpleType name="TimeNowType">		<xs:annotation>			<xs:documentation>An enumeration containing the value "now"</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:string">			<xs:enumeration value="now"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="TimeUnboundedType">		<xs:annotation>			<xs:documentation>An enumeration containing the value "unbounded"</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:string">			<xs:enumeration value="unbounded"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="TimeType">		<xs:annotation>			<xs:documentation>The number of seconds since the unix epoch, or "now".</xs:documentation>		</xs:annotation>		<xs:union>			<xs:simpleType>				<xs:restriction base="xs:double">					<xs:minExclusive value="-INF"/>					<xs:maxExclusive value="+INF"/>				</xs:restriction>			</xs:simpleType>			<xs:simpleType>				<xs:restriction base="tns:TimeNowType"/>			</xs:simpleType>		</xs:union>	</xs:simpleType>	<xs:simpleType name="TimeIntervalType">		<xs:annotation>			<xs:documentation>An interval in seconds, or "unbounded"</xs:documentation>		</xs:annotation>		<xs:union>			<xs:simpleType>				<xs:restriction base="xs:double">					<xs:minInclusive value="0"/>					<xs:maxExclusive value="+INF"/>				</xs:restriction>			</xs:simpleType>			<xs:simpleType>				<xs:restriction base="tns:TimeUnboundedType"/>			</xs:simpleType>		</xs:union>	</xs:simpleType></xs:schema>
