<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions name="CharacterisationService"
                  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                  xmlns:xs="http://www.w3.org/2001/XMLSchema"
                  xmlns:tns="http://chr.pronom.nationalarchives.gov.uk"
                  targetNamespace="http://chr.pronom.nationalarchives.gov.uk"
                  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
                  xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
	<wsdl:types>

	

		<xs:schema elementFormDefault="qualified"
                   xmlns:tns="http://chr.pronom.nationalarchives.gov.uk"
                   targetNamespace="http://chr.pronom.nationalarchives.gov.uk">

			<!-- Get Messages Schemas -->

			<xs:element name="PUID">
				<xs:complexType >
					<xs:sequence>
						<xs:element name="Value" type="xs:string" maxOccurs="1" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>

			<xs:element name="PRONOMEmpty">
				<xs:complexType>
					<xs:sequence>
					</xs:sequence>
				</xs:complexType>
			</xs:element>

      <xs:element name="getSchema">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="SchemaNamespace" type="xs:string" />
            <xs:element name="SchemaLocation" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      
      <xs:element name="getDTD">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="publicID" type="xs:string" />
            <xs:element name="systemID" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

			<!-- Response message schemas -->
				
			<xs:element name="ToolList">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Tool" type="tns:Tool" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>

				<xs:element name="ToolPropertiesList">
					<xs:complexType >
						<xs:sequence>
							<xs:element name="property" type="tns:typeProperty" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>

      <xs:element name="Schema" type="xs:string"/>

      <xs:element name="DTD" type="xs:string"/>
      
      
      <!-- Types -->

			<xs:complexType name="Tool">
				<xs:sequence>
					<xs:element name="className" type="xs:string"/>
					<xs:element name="toolName" type="xs:string"/>
					<xs:element name="toolTypeID" type="xs:int"/>
					<xs:element name="toolID" type="xs:int"/>
					<xs:element name="toolPriority" type="xs:int"/>
				</xs:sequence>
			</xs:complexType>
			
			<xs:complexType name="typeProperty">
				<xs:sequence>
					<xs:element name="propertyname" type="xs:string"/>
					<xs:element name="tools" type="tns:typeTools"/>
				</xs:sequence>
				<xs:attribute name="id" type="xs:nonNegativeInteger"/>
			</xs:complexType>

			<xs:complexType name="typeTools">
				<xs:sequence>
					<xs:element name="tool" type="tns:typeTool" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
			</xs:complexType>

			<xs:complexType name="typeTool" mixed="true">
				<xs:sequence>
					<xs:any minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="id" type="xs:positiveInteger"/>
			</xs:complexType>
      
		</xs:schema>
	
	</wsdl:types>

	<!-- Messages -->

	<wsdl:message name="getIdentificationToolsSoapIn">
		<wsdl:part name="messagePart" element="tns:PRONOMEmpty"/>
	</wsdl:message>
	<wsdl:message name="getIdentificationToolsSoapOut">
		<wsdl:part name="messagePart" element="tns:ToolList"/>
	</wsdl:message>

	<wsdl:message name="getValidationToolsIn">
		<wsdl:part name="messagePart" element="tns:PUID"/>
	</wsdl:message>
	<wsdl:message name="getValidationToolsOut">
		<wsdl:part name="messagePart" element="tns:ToolList"/>
	</wsdl:message>

	<wsdl:message name="getPropertyExtractionToolsIn">
		<wsdl:part name="messagePart" element="tns:PUID"/>
	</wsdl:message>
	<wsdl:message name="getPropertyExtractionToolsOut">
		<wsdl:part name="messagePart" element="tns:ToolList"/>
	</wsdl:message>

	<wsdl:message name="getToolPropertiesIn">
		<wsdl:part name="messagePart" element="tns:PRONOMEmpty"/>
	</wsdl:message>
	<wsdl:message name="getToolPropertiesOut">
		<wsdl:part name="messagePart" element="tns:ToolPropertiesList"/>
	</wsdl:message>

	<wsdl:message name="getObjectExtractionToolsIn">
		<wsdl:part name="messagePart" element="tns:PUID"/>
	</wsdl:message>
	<wsdl:message name="getObjectExtractionToolsOut">
		<wsdl:part name="messagePart" element="tns:ToolList"/>
	</wsdl:message>

  <wsdl:message name="getSchemaIn">
    <wsdl:part name="messagePart" element="tns:getSchema" />
  </wsdl:message>
  <wsdl:message name="getSchemaOut">
    <wsdl:part name="messagePart" element="tns:Schema" />
  </wsdl:message>

  <wsdl:message name="getDTDIn">
    <wsdl:part name="messagePart" element="tns:getDTD" />
  </wsdl:message>
  <wsdl:message name="getDTDOut">
    <wsdl:part name="messagePart" element="tns:DTD" />
  </wsdl:message>


  <!-- Operations -->

	<wsdl:portType name="CharacterisationService">
		<wsdl:operation name="getIdentificationTools">
			<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"> List all identification Tools </documentation>
			<wsdl:input message="tns:getIdentificationToolsSoapIn"/>
			<wsdl:output message="tns:getIdentificationToolsSoapOut"/>
		</wsdl:operation>
		<wsdl:operation name="getValidationTools">
			<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Returns a list of validation tools for a given format </wsdl:documentation>
			<wsdl:input message="tns:getValidationToolsIn"/>
			<wsdl:output message="tns:getValidationToolsOut"/>
		</wsdl:operation>
		<wsdl:operation name="getPropertyExtractionTools">
			<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Returns a list of extraction tools for a given format </wsdl:documentation>
			<wsdl:input message="tns:getPropertyExtractionToolsIn"/>
			<wsdl:output message="tns:getPropertyExtractionToolsOut"/>
		</wsdl:operation>
		<wsdl:operation name="getToolProperties">
			<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Returns a list of tools and the properties that they can extract </wsdl:documentation>
			<wsdl:input message="tns:getToolPropertiesIn"/>
			<wsdl:output message="tns:getToolPropertiesOut"/>
		</wsdl:operation>
		<wsdl:operation name="getObjectExtractionTools">
			<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Returns a list of property extraction tools for a given format </wsdl:documentation>
			<wsdl:input message="tns:getObjectExtractionToolsIn"/>
			<wsdl:output message="tns:getObjectExtractionToolsOut"/>
		</wsdl:operation>
    <wsdl:operation name="getSchema">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Returns an xml schema from Pronom for xml validation </wsdl:documentation>
      <wsdl:input message="tns:getSchemaIn" />
      <wsdl:output message="tns:getSchemaOut" />
    </wsdl:operation>
    <wsdl:operation name="getDTD">
      <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> Returns an xml DTD from Pronom for xml validation </wsdl:documentation>
      <wsdl:input message="tns:getDTDIn" />
      <wsdl:output message="tns:getDTDOut" />
    </wsdl:operation>
	</wsdl:portType>


	<wsdl:binding name="CharacterisationServiceSoap" type="tns:CharacterisationService">
		<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
		<wsdl:operation name="getIdentificationTools">
			<soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getIdentificationTools" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="getValidationTools">
			<soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getValidationToolsIn" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="getPropertyExtractionTools">
			<soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getPropertyExtractionToolsIn" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="getToolProperties">
			<soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getToolPropertiesIn" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="getObjectExtractionTools">
			<soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getObjectExtractionToolsIn" style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
    <wsdl:operation name="getSchema">
      <soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getSchemaIn" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="getDTD">
      <soap:operation soapAction="http://chr.pronom.nationalarchives.gov.uk/getDTDIn" style="document" />
      <wsdl:input>
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
	</wsdl:binding>


	<wsdl:service name="CharacterisationService">
		<wsdl:port name="CharacterisationServiceSoap" binding="tns:CharacterisationServiceSoap">
			<soap:address location=""/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>
