<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:srv="http://www.isotc211.org/2005/srv" xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.isotc211.org/2005/srv" elementFormDefault="qualified" version="1.0.1">
	<!-- ================================= Annotation ================================ -->
	<xs:annotation>
		<xs:documentation>2018-03-21 Revert namespace to http://www.isotc211.org/2005/srv while version remains at 1.0.1 .</xs:documentation>
		<xs:documentation>2018-03-01 Change namespace to http://www.opengis.net/iso/19139/20070417/srv/1.0 and update version to 1.0.1 .</xs:documentation>
		<xs:documentation>2013-05-24 Add include statement for srv.xsd to ensure that the full namespace will be imported even if it is imported using serviceModel.xsd instead of the root schema.</xs:documentation>
		<xs:documentation>2013-05-24 Update of schemalocation statements to refer to ISO/TC 211 XML Schemas available on http://standards.iso.org/ittf/PubliclyAvailableStandards. This includes the adoption of W3C implementation of Xlink: http://www.w3.org/1999/xlink.xsd.</xs:documentation>
		<xs:documentation>2009-03-02 Made conformant with OGC published GML 3.2.1 schemas from OGC 07-036 (schemas repository http://schemas.opengis.net/).</xs:documentation>
		<xs:documentation>2006-10-13 This file was generated from ISO TC/211 UML class diagrams. It is based on document 211n1977 (Text of ISO 19119:2005 Amd. 1, Geographic information - Services, Amendment 1), as sent to ISO for further processing. See seriveMetadata.xsd</xs:documentation>
	</xs:annotation>
	<!-- ================================== Imports ================================== -->
	<xs:import namespace="http://www.isotc211.org/2005/gmd" schemaLocation="../gmd/gmd.xsd"/>
	<xs:import namespace="http://www.isotc211.org/2005/gco" schemaLocation="../gco/gco.xsd"/>
	<xs:include schemaLocation="srv.xsd"/>
	<!-- ########################################################################### -->
	<!-- ########################################################################### -->
	<!-- ================================== Classes ================================= -->
	<xs:complexType name="SV_ServiceSpecification_Type">
		<xs:complexContent>
			<xs:extension base="srv:AbstractSV_AbstractServiceSpecification_Type">
				<xs:sequence>
					<xs:element name="typeSpec" type="srv:SV_PlatformNeutralServiceSpecification_PropertyType" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_ServiceSpecification" type="srv:SV_ServiceSpecification_Type" substitutionGroup="srv:AbstractSV_AbstractServiceSpecification"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_ServiceSpecification_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_ServiceSpecification"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_PlatformNeutralServiceSpecification_Type">
		<xs:complexContent>
			<xs:extension base="srv:AbstractSV_AbstractServiceSpecification_Type">
				<xs:sequence>
					<xs:element name="serviceType" type="srv:SV_ServiceType_PropertyType"/>
					<xs:element name="implSpec" type="srv:SV_PlatformSpecificServiceSpecification_PropertyType" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_PlatformNeutralServiceSpecification" type="srv:SV_PlatformNeutralServiceSpecification_Type" substitutionGroup="srv:AbstractSV_AbstractServiceSpecification"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_PlatformNeutralServiceSpecification_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_PlatformNeutralServiceSpecification"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_PlatformSpecificServiceSpecification_Type">
		<xs:complexContent>
			<xs:extension base="srv:AbstractSV_AbstractServiceSpecification_Type">
				<xs:sequence>
					<xs:element name="DCP" type="srv:DCPList_PropertyType"/>
					<xs:element name="typeSpec" type="srv:SV_PlatformNeutralServiceSpecification_PropertyType"/>
					<xs:element name="implementation" type="srv:SV_Service_PropertyType" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_PlatformSpecificServiceSpecification" type="srv:SV_PlatformSpecificServiceSpecification_Type" substitutionGroup="srv:AbstractSV_AbstractServiceSpecification"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_PlatformSpecificServiceSpecification_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_PlatformSpecificServiceSpecification"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_Port_Type">
		<xs:complexContent>
			<xs:extension base="gco:AbstractObject_Type">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_Port" type="srv:SV_Port_Type"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_Port_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_Port"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_Service_Type">
		<xs:complexContent>
			<xs:extension base="gco:AbstractObject_Type">
				<xs:sequence>
					<xs:element name="specification" type="srv:SV_PlatformSpecificServiceSpecification_PropertyType" maxOccurs="unbounded"/>
					<xs:element name="theSV_Port" type="srv:SV_Port_PropertyType" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_Service" type="srv:SV_Service_Type"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_Service_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_Service"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_Interface_Type">
		<xs:complexContent>
			<xs:extension base="gco:AbstractObject_Type">
				<xs:sequence>
					<xs:element name="typeName" type="gco:TypeName_PropertyType"/>
					<xs:element name="operation" type="srv:SV_Operation_PropertyType"/>
					<xs:element name="theSV_PortSpecification" type="srv:SV_PortSpecification_PropertyType" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_Interface" type="srv:SV_Interface_Type"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_Interface_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_Interface"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_Operation_Type">
		<xs:complexContent>
			<xs:extension base="gco:AbstractObject_Type">
				<xs:sequence>
					<xs:element name="operationName" type="gco:MemberName_PropertyType"/>
					<xs:element name="dependsOn" type="srv:SV_Operation_PropertyType" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element name="parameter" type="srv:SV_Parameter_PropertyType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_Operation" type="srv:SV_Operation_Type"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_Operation_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_Operation"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="AbstractSV_AbstractServiceSpecification_Type" abstract="true">
		<xs:complexContent>
			<xs:extension base="gco:AbstractObject_Type">
				<xs:sequence>
					<xs:element name="name" type="gco:CharacterString_PropertyType"/>
					<xs:element name="opModel" type="srv:SV_OperationModel_PropertyType"/>
					<xs:element name="theSV_Interface" type="srv:SV_Interface_PropertyType" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="AbstractSV_AbstractServiceSpecification" type="srv:AbstractSV_AbstractServiceSpecification_Type" abstract="true"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_AbstractServiceSpecification_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:AbstractSV_AbstractServiceSpecification"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:complexType name="SV_PortSpecification_Type">
		<xs:complexContent>
			<xs:extension base="gco:AbstractObject_Type">
				<xs:sequence>
					<xs:element name="binding" type="srv:DCPList_PropertyType"/>
					<xs:element name="address" type="gmd:URL_PropertyType"/>
					<xs:element name="theSV_Port" type="srv:SV_Port_PropertyType"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<!-- ........................................................................ -->
	<xs:element name="SV_PortSpecification" type="srv:SV_PortSpecification_Type"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_PortSpecification_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_PortSpecification"/>
		</xs:sequence>
		<xs:attributeGroup ref="gco:ObjectReference"/>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<xs:simpleType name="SV_OperationModel_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="object"/>
			<xs:enumeration value="message"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- ........................................................................ -->
	<xs:element name="SV_OperationModel" type="srv:SV_OperationModel_Type" substitutionGroup="gco:CharacterString"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_OperationModel_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_OperationModel"/>
		</xs:sequence>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
	<!-- ........................................................................ -->
	<xs:element name="SV_ServiceType" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString"/>
	<!-- ........................................................................ -->
	<xs:complexType name="SV_ServiceType_PropertyType">
		<xs:sequence minOccurs="0">
			<xs:element ref="srv:SV_ServiceType"/>
		</xs:sequence>
		<xs:attribute ref="gco:nilReason"/>
	</xs:complexType>
	<!-- =========================================================================== -->
</xs:schema>
