<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema generated by XMLSPY v5 rel. 3 U (http://www.xmlspy.com)-->
<xs:schema targetNamespace="draft-ietf-inch-iodef-xws-042.xsd" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:iodef-xws="draft-ietf-inch-iodef-xws-042.xsd" xmlns:iodef="draft-ietf-inch-iodef-042.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
	<xs:import namespace="draft-ietf-inch-iodef-042.xsd" schemaLocation="draft-ietf-inch-iodef-042.xsd"/>
	<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
	<!--
 ********************************************************************
 ********************************************************************
 *** Incident Object Description and Exchange Format XML Schema   ***
 ***               Version 04, March 2005                         ***
******************************************************************
 ***    Extension for Web Services and Grids             ***
***    Namespace - iodef-xws                 ***
 ********************************************************************
 -->
	<!--
 XMLWebService element is an extention element of the IODEF System class
 -->
	<!--
	<xs:element name="System">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="iodef:Node"/>
				<xs:element ref="iodef:Service" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="iodef:OperatingSystem" minOccurs="0"/>
				<xs:element ref="iodef-xws:XMLWebService" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute ref="iodef:restriction"/>
			<xs:attribute name="interface" type="xs:string"/>
			<xs:attribute ref="iodef:systemcat"/>
			<xs:attribute ref="iodef:spoofed" default="unknown"/>
		</xs:complexType>
	</xs:element>
	-->
	<!-- 
 ====== XML Web Service ======
 ====  Suggested defintion for the XML WebService
 -->
	<xs:annotation>
		<xs:documentation> XMLWebService element is an extention element of the IODEF System class</xs:documentation>
	</xs:annotation>
	<xs:element name="XMLWebService" type="iodef-xws:XMLWebServiceType"/>
	<xs:complexType name="XMLWebServiceType">
		<xs:sequence>
			<xs:element ref="iodef-xws:EPReference" minOccurs="0"/>
			<xs:element ref="iodef-xws:Principal" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Resource" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Job" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Session" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Authentication" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Authorization" minOccurs="0"/>
			<xs:element ref="iodef-xws:WebServiceData" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!-- 
	WebServiceData may include the whole WSDL source file or its component PortType, Service, Binding, MessagePart
	using imported WSDL or GWSDL schema namespaces
	Also may contain Web Service input and output data with their own namespaces
-->
	<xs:annotation>
		<xs:documentation>WebServiceData may include WSDL source file and its component 
		or input and output data with their own namespaces</xs:documentation>
	</xs:annotation>
	<xs:element name="WebServiceData" type="iodef-xws:WebServiceDataType"/>
	<xs:complexType name="WebServiceDataType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<!-- (0,unbounded) elements from any (target and external) namespace -->
		</xs:sequence>
		<xs:attribute ref="iodef:dtype" use="required"/>
	</xs:complexType>
	<!-- Other components of the XMLWebService -->
	<xs:element name="EPReference" type="xs:string"/>
	<!-- -->
	<xs:element name="Resource" type="iodef-xws:ResourceType"/>
	<xs:complexType name="ResourceType">
		<xs:sequence>
			<xs:element ref="iodef-xws:EPReference"/>
			<xs:element ref="iodef-xws:ResourceData" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:resourcetype" use="required"/>
	</xs:complexType>
	<xs:element name="ResourceData" type="iodef-xws:ResourceDataType"/>
	<xs:complexType name="ResourceDataType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<!-- (0,unbounded) elements from any (target and external) namespace -->
		</xs:sequence>
		<xs:attribute ref="iodef:dtype" use="required"/>
		<xs:attribute name="meaning" type="xs:string"/>
	</xs:complexType>
	<!-- Job and Session has the same structure and in WSRF can be merged with the Resource -->
	<xs:element name="Job" type="iodef-xws:JobType"/>
	<xs:complexType name="JobType">
		<xs:sequence>
			<xs:element name="JobID" type="xs:string"/>
			<xs:element ref="iodef-xws:JobData" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:resourcetype" use="required"/>
	</xs:complexType>
	<xs:element name="JobData" type="iodef:AdditionalDataType"/>
	<xs:element name="Session" type="iodef-xws:SessionType"/>
	<xs:complexType name="SessionType">
		<xs:sequence>
			<xs:element name="SessionID" type="xs:string"/>
			<xs:element ref="iodef-xws:SessionData" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:resourcetype" use="required"/>
	</xs:complexType>
	<xs:element name="SessionData" type="iodef:AdditionalDataType"/>
	<!-- 
	
 -->
	<xs:element name="Authentication" type="iodef-xws:AuthenticationType"/>
	<xs:complexType name="AuthenticationType">
		<xs:sequence>
			<xs:element ref="iodef-xws:AAContext" minOccurs="0"/>
			<xs:element ref="iodef-xws:SProvider" minOccurs="0"/>
			<xs:element ref="iodef-xws:SPresult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:authnmethod" use="required"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="Authorization" type="iodef-xws:AuthorizationType"/>
	<xs:complexType name="AuthorizationType">
		<xs:sequence>
			<xs:element ref="iodef-xws:AAContext" minOccurs="0"/>
			<xs:element ref="iodef-xws:SProvider" minOccurs="0"/>
			<xs:element ref="iodef-xws:SPresult" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:authnmethod" use="required"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="AAContext" type="iodef-xws:AAContextType"/>
	<xs:complexType name="AAContextType">
		<xs:sequence>
			<xs:element ref="iodef-xws:Credentials" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Attributes" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:ContextData" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="PolicyIDRef" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:element name="ContextData" type="iodef:AdditionalDataType"/>
	<!-- -->
	<xs:element name="SPresult" type="iodef-xws:SPresultType"/>
	<xs:complexType name="SPresultType">
		<xs:sequence>
			<xs:element ref="iodef-xws:Result" minOccurs="0"/>
			<xs:element ref="iodef-xws:ResultData" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:resulttype" use="required"/>
		<xs:attribute name="counter" type="xs:integer" use="optional"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="Result" type="xs:string"/>
	<xs:element name="ResultData" type="iodef:AdditionalDataType"/>
	<!-- -->
	<xs:element name="SProvider" type="iodef-xws:SProviderType"/>
	<xs:complexType name="SProviderType">
		<xs:sequence>
			<xs:element ref="iodef-xws:EPReference" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:providertype" use="required"/>
	</xs:complexType>
	<!--
 ====================================================================
 ===  Principal class                                                  ===
 ===   
 ====================================================================
 -->
	<xs:element name="Principal" type="iodef-xws:PrincipalType"/>
	<xs:complexType name="PrincipalType">
		<xs:sequence>
			<xs:element ref="iodef:NameIdentifier"/>
			<xs:element ref="iodef-xws:Credentials" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:Attributes" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:principalcat" default="other"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="Credentials" type="iodef-xws:CredentialsType"/>
	<xs:complexType name="CredentialsType">
		<xs:sequence>
			<xs:element ref="iodef-xws:CredentialData" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="iodef-xws:CredentialConfirmation" minOccurs="0"/>
			<xs:element ref="iodef-xws:CredentialStorage" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef:restriction" default="default"/>
		<xs:attribute ref="iodef-xws:credstatus" use="required"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="CredentialData" type="iodef-xws:CredentialDataType"/>
	<xs:complexType name="CredentialDataType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<!-- (0,unbounded) elements from any (target and external) namespace -->
		</xs:sequence>
		<xs:attribute ref="iodef-xws:credstype" default="other"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="CredentialConfirmation" type="iodef-xws:CredentialConfirmationType"/>
	<xs:complexType name="CredentialConfirmationType">
		<xs:sequence>
			<xs:element ref="iodef-xws:SProvider" minOccurs="0"/>
			<xs:element ref="iodef-xws:ResultData" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<!-- -->
	<xs:element name="CredentialStorage" type="iodef-xws:CredentialStorageType"/>
	<xs:complexType name="CredentialStorageType">
		<xs:sequence>
			<xs:element ref="iodef-xws:CredStoreIDRef" minOccurs="0"/>
			<xs:element ref="iodef-xws:CredStoreLocation" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute ref="iodef-xws:credstoretype" default="other"/>
		<xs:attribute ref="iodef-xws:credstatus" use="required"/>
	</xs:complexType>
	<!-- -->
	<xs:element name="Attributes" type="iodef-xws:AttributesType"/>
	<xs:complexType name="AttributesType">
		<xs:sequence>
			<xs:element ref="iodef-xws:Attribute" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="Attribute" type="iodef-xws:AttributeType"/>
	<xs:complexType name="AttributeType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			<!-- (0,unbounded) elements from any (target and external) namespace -->
		</xs:sequence>
		<xs:attribute ref="iodef-xws:attrtype" default="other"/>
	</xs:complexType>
	<xs:element name="CredStoreLocation" type="xs:string"/>
	<xs:element name="CredStoreIDRef" type="xs:string"/>
	<!--
 ====================================================================
 === Attribute list declarations.                      ===
 ====================================================================
 -->
	<!--
 | Values for the Principal.Attribute.attrtype attribute.
 -->
	<xs:attribute name="attrtype">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="permissionlevel"/>
				<xs:enumeration value="usergroup"/>
				<xs:enumeration value="role"/>
				<xs:enumeration value="vo"/>
				<xs:enumeration value="email"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the Authentication.authnmethod attribute.
 -->
	<xs:attribute name="authnmethod">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="password"/>
				<xs:enumeration value="x509cert"/>
				<xs:enumeration value="pgpcert"/>
				<xs:enumeration value="smartcard"/>
				<xs:enumeration value="sectoken"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the Authorization.authzmethod attribute.
 -->
	<xs:attribute name="authzmethod">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="cas"/>
				<xs:enumeration value="lcas"/>
				<xs:enumeration value="xacml"/>
				<xs:enumeration value="azticket"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the Principal.Credentials.credstatus attribute.
 -->
	<xs:attribute name="credstatus">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="valid"/>
				<xs:enumeration value="delegated"/>
				<xs:enumeration value="revoked"/>
				<xs:enumeration value="compromised"/>
				<xs:enumeration value="quarantined"/>
				<xs:enumeration value="uncertain"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the CredntialStorage.credstoretype attribute.
 -->
	<xs:attribute name="credstoretype">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="jks"/>
				<xs:enumeration value="filesystem"/>
				<xs:enumeration value="filesystem-protected"/>
				<xs:enumeration value="smartcard"/>
				<xs:enumeration value="sectoken"/>
				<xs:enumeration value="mspassport"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the Principal.CredentialData.credstype attribute.
 -->
	<xs:attribute name="credstype">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="x509cert"/>
				<xs:enumeration value="crl"/>
				<xs:enumeration value="proxycert"/>
				<xs:enumeration value="attrcert"/>
				<xs:enumeration value="pgpcert"/>
				<xs:enumeration value="keyinfo"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the SProvider.providertype attribute.
 -->
	<xs:attribute name="providertype">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="AN"/>
				<xs:enumeration value="ISP"/>
				<xs:enumeration value="AZ"/>
				<xs:enumeration value="AA"/>
				<xs:enumeration value="PA"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:attribute name="principalcat">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="user"/>
				<xs:enumeration value="process"/>
				<xs:enumeration value="service"/>
				<xs:enumeration value="intermediar"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the Resource.resourcetype attribute.
 -->
	<xs:attribute name="resourcetype">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="CE"/>
				<xs:enumeration value="SE"/>
				<xs:enumeration value="DE"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<!--
 | Values for the SPresult.resulttype attribute.
 -->
	<xs:attribute name="resulttype">
		<xs:simpleType>
			<xs:restriction base="xs:NMTOKEN">
				<xs:enumeration value="authn"/>
				<xs:enumeration value="authz"/>
				<xs:enumeration value="delegate"/>
				<xs:enumeration value="other"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
</xs:schema>

