Proposed qname->URI schema changes

Attached is a modified version of xkms.xsd, and a diff file that shows 
the changes.  There are two "gratuitous" changes:
       Adding a DTD and defining an entityt for the XKMS URI, for easier 
maintenance and better clarity.
       Changing KeyUsageType to KeyUsageEnum for style consistency

Hopefully it's all understandable.
	/r$

-- 
Rich Salz, Chief Security Architect
DataPower Technology                           http://www.datapower.com
XS40 XML Security Gateway   http://www.datapower.com/products/xs40.html
XML Security Overview  http://www.datapower.com/xmldev/xmlsecurity.html
*** xkms.xsd.orig	Wed Sep 15 11:33:03 2004
--- xkms.xsd	Wed Sep 15 14:32:38 2004
***************
*** 3,11 ****
  Schema  updates:
  1.  Changed RSAKeyValue and 
      RSAKeyValueType to RSAKeyPair and RSAKeyPairType respectively
  -->
  
! <schema targetNamespace="http://www.w3.org/2002/03/xkms#" xmlns:xkms="http://www.w3.org/2002/03/xkms#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  	<import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
  	<import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/>
  	<annotation>
--- 3,20 ----
  Schema  updates:
  1.  Changed RSAKeyValue and 
      RSAKeyValueType to RSAKeyPair and RSAKeyPairType respectively
+ 2.  Replace qname with URI using open enumeration technique described in
+         http://lists.oasis-open.org/archives/wss/200402/msg00011.html
+     Rationale for the change is given at
+         http://www.w3.org/2001/tag/doc/qnameids.html#sec-archrec
  -->
+ <!DOCTYPE schema [
+   <!--  The URI for the XKMS namespace, and also the base URI used for
+         URI's defined by the specification. -->
+   <!ENTITY xkms 'http://www.w3.org/2002/03/xkms#'>
+ ]>
  
! <schema targetNamespace="&xkms;" xmlns:xkms="&xkms;" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  	<import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
  	<import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="xenc-schema.xsd"/>
  	<annotation>
***************
*** 55,64 ****
  	</complexType>
  	<!-- /RequestAbstractType -->
  	<!-- ResponseMechanism -->
! 	<element name="ResponseMechanism" type="QName"/>
  	<!-- /ResponseMechanism -->
  	<!-- RespondWith -->
! 	<element name="RespondWith" type="QName"/>
  	<!-- /RespondWith -->
  	<!-- PendingNotification -->
  	<element name="PendingNotification" type="xkms:PendingNotificationType"/>
--- 64,101 ----
  	</complexType>
  	<!-- /RequestAbstractType -->
  	<!-- ResponseMechanism -->
!         <simpleType name="ResponseMechanismEnum">
!           <restriction base="anyURI">
!             <enumeration value="&xkms;Pending"/>
!             <enumeration value="&xkms;Represent"/>
!             <enumeration value="&xkms;RequestSignatureValue"/>
!           </restriction>
!         </simpleType>
!         <simpleType name="ResponseMechanismOpenEnum">
!           <union memberTypes="xkms:ResponseMechanismEnum anyURI"/>
!         </simpleType>
! 	<element name="ResponseMechanism" type="xkms:ResponseMechanismOpenEnum"/>
  	<!-- /ResponseMechanism -->
  	<!-- RespondWith -->
!         <simpleType name="RespondWithEnum">
!                 <restriction base="anyURI">
!                         <enumeration value="&xkms;KeyName"/>
!                         <enumeration value="&xkms;KeyValue"/>
!                         <enumeration value="&xkms;X509Cert"/>
!                         <enumeration value="&xkms;X509Chain"/>
!                         <enumeration value="&xkms;X509CRL"/>
!                         <enumeration value="&xkms;OCSP"/>
!                         <enumeration value="&xkms;RetrievalMethod"/>
!                         <enumeration value="&xkms;PGP"/>
!                         <enumeration value="&xkms;PGPWeb"/>
!                         <enumeration value="&xkms;SPKI"/>
!                         <enumeration value="&xkms;PrivateKey"/>
!                 </restriction>
!         </simpleType>
!         <simpleType name="RespondWithOpenEnum">
!                 <union memberTypes="xkms:RespondWithEnum anyURI"/>
!         </simpleType>
! 	<element name="RespondWith" type="xkms:RespondWithOpenEnum"/>
  	<!-- /RespondWith -->
  	<!-- PendingNotification -->
  	<element name="PendingNotification" type="xkms:PendingNotificationType"/>
***************
*** 79,92 ****
  	<!-- /PendingRequest -->
  	<!-- ResultType -->
  	<element name="Result" type="xkms:ResultType"/>
  	<complexType name="ResultType">
  		<complexContent>
  			<extension base="xkms:MessageAbstractType">
  				<sequence>
  					<element ref="xkms:RequestSignatureValue" minOccurs="0"/>
  				</sequence>
! 				<attribute name="ResultMajor" type="QName" use="required"/>
! 				<attribute name="ResultMinor" type="QName" use="optional"/>
  				<attribute name="RequestId" type="NCName" use="optional"/>
  			</extension>
  		</complexContent>
--- 116,159 ----
  	<!-- /PendingRequest -->
  	<!-- ResultType -->
  	<element name="Result" type="xkms:ResultType"/>
+         <simpleType name="ResultMajorEnum">
+                 <restriction base="anyURI">
+                         <enumeration value="&xkms;Success"/>
+                         <enumeration value="&xkms;VersionMismatch"/>
+                         <enumeration value="&xkms;Sender"/>
+                         <enumeration value="&xkms;Receiver"/>
+                         <enumeration value="&xkms;Represent"/>
+                         <enumeration value="&xkms;Pending"/>
+                 </restriction>
+         </simpleType>
+         <simpleType name="ResultMajorOpenEnum">
+                 <union memberTypes="xkms:ResultMajorEnum anyURI"/>
+         </simpleType>
+         <simpleType name="ResultMinorEnum">
+                 <restriction base="anyURI">
+                         <enumeration value="&xkms;NoMatch"/>
+                         <enumeration value="&xkms;TooManyResponses"/>
+                         <enumeration value="&xkms;Incomplete"/>
+                         <enumeration value="&xkms;Failure"/>
+                         <enumeration value="&xkms;Refused"/>
+                         <enumeration value="&xkms;NoAuthentication"/>
+                         <enumeration value="&xkms;MessageNotSupported"/>
+                         <enumeration value="&xkms;UnknownResponseId"/>
+                         <enumeration value="&xkms;RepresentRequired"/>
+                         <enumeration value="&xkms;NotSynchronous"/>
+                 </restriction>
+         </simpleType>
+         <simpleType name="ResultMinorOpenEnum">
+                 <union memberTypes="xkms:ResultMinorEnum anyURI"/>
+         </simpleType>
  	<complexType name="ResultType">
  		<complexContent>
  			<extension base="xkms:MessageAbstractType">
  				<sequence>
  					<element ref="xkms:RequestSignatureValue" minOccurs="0"/>
  				</sequence>
! 				<attribute name="ResultMajor" type="xkms:ResultMajorOpenEnum" use="required"/>
! 				<attribute name="ResultMinor" type="xkms:ResultMinorOpenEnum" use="optional"/>
  				<attribute name="RequestId" type="NCName" use="optional"/>
  			</extension>
  		</complexContent>
***************
*** 184,197 ****
  	</complexType>
  	<!-- /KeyBinding -->
  	<!-- KeyUsage -->
! 	<element name="KeyUsage" type="xkms:KeyUsageType"/>
! 	<simpleType name="KeyUsageType">
! 		<restriction base="QName">
! 			<enumeration value="xkms:Encryption"/>
! 			<enumeration value="xkms:Signature"/>
! 			<enumeration value="xkms:Exchange"/>
  		</restriction>
  	</simpleType>
  	<!-- /KeyUsage -->
  	<!-- UseKeyWith -->
  	<element name="UseKeyWith" type="xkms:UseKeyWithType"/>
--- 251,264 ----
  	</complexType>
  	<!-- /KeyBinding -->
  	<!-- KeyUsage -->
! 	<simpleType name="KeyUsageEnum">
! 		<restriction base="anyURI">
! 			<enumeration value="&xkms;Encryption"/>
! 			<enumeration value="&xkms;Signature"/>
! 			<enumeration value="&xkms;Exchange"/>
  		</restriction>
  	</simpleType>
+ 	<element name="KeyUsage" type="xkms:KeyUsageEnum"/>
  	<!-- /KeyUsage -->
  	<!-- UseKeyWith -->
  	<element name="UseKeyWith" type="xkms:UseKeyWithType"/>
***************
*** 208,227 ****
  			<element ref="xkms:IndeterminateReason" minOccurs="0" maxOccurs="unbounded"/>
  			<element ref="xkms:InvalidReason" minOccurs="0" maxOccurs="unbounded"/>
  		</sequence>
! 		<attribute name="StatusValue" type="xkms:KeyBindingStatus" use="required"/>
  	</complexType>
! 	<simpleType name="KeyBindingStatus">
! 		<restriction base="QName">
! 			<enumeration value="xkms:Valid"/>
! 			<enumeration value="xkms:Invalid"/>
! 			<enumeration value="xkms:Indeterminate"/>
  		</restriction>
  	</simpleType>
  	<!-- /Status -->
  	<!-- Reason -->
! 	<element name="ValidReason" type="QName"/>
! 	<element name="InvalidReason" type="QName"/>
! 	<element name="IndeterminateReason" type="QName"/>
  	<!-- /Reason -->
  	<!-- ValidityInterval -->
  	<element name="ValidityInterval" type="xkms:ValidityIntervalType"/>
--- 275,305 ----
  			<element ref="xkms:IndeterminateReason" minOccurs="0" maxOccurs="unbounded"/>
  			<element ref="xkms:InvalidReason" minOccurs="0" maxOccurs="unbounded"/>
  		</sequence>
! 		<attribute name="StatusValue" type="xkms:KeyBindingEnum" use="required"/>
  	</complexType>
! 	<simpleType name="KeyBindingEnum">
! 		<restriction base="anyURI">
! 			<enumeration value="&xkms;Valid"/>
! 			<enumeration value="&xkms;Invalid"/>
! 			<enumeration value="&xkms;Indeterminate"/>
  		</restriction>
  	</simpleType>
  	<!-- /Status -->
  	<!-- Reason -->
!         <simpleType name="ReasonEnum">
!                 <restriction base="anyURI">
!                         <enumeration value="&xkms;IssuerTrust"/>
!                         <enumeration value="&xkms;RevocationStatus"/>
!                         <enumeration value="&xkms;ValidityInterval"/>
!                         <enumeration value="&xkms;Signature"/>
!                 </restriction>
!         </simpleType>
!         <simpleType name="ReasonOpenEnum">
!                 <union memberTypes="xkms:ReasonEnum anyURI"/>
!         </simpleType>
! 	<element name="ValidReason" type="xkms:ReasonOpenEnum"/>
! 	<element name="InvalidReason" type="xkms:ReasonOpenEnum"/>
! 	<element name="IndeterminateReason" type="xkms:ReasonOpenEnum"/>
  	<!-- /Reason -->
  	<!-- ValidityInterval -->
  	<element name="ValidityInterval" type="xkms:ValidityIntervalType"/>

Received on Wednesday, 15 September 2004 18:32:35 UTC