OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dss-x message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Comments on the Base schema


Hi all,


see my comments regarding the 'TBD' topics inline.


Greetings,


Andreas

-- 
Andreas Kühne 
phone: +49 177 293 24 97 
mailto: kuehne@trustable.de

Trustable Ltd. Niederlassung Deutschland Gartenheimstr. 39C - 30659 Hannover Amtsgericht Hannover HRB 212612

Director Andreas Kühne

Company UK Company No: 5218868 Registered in England and Wales 

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
	xmlns:dsb="urn:oasis:names:tc:dss:2.0:base:schema"
	xmlns:xs="http://www.w3.org/2001/XMLSchema";

	xmlns:es="http://trustable.eu/enrichSchema";
	xmlns:annox="http://annox.dev.java.net";
	xmlns:jxb="http://java.sun.com/xml/ns/jaxb";
	xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc";

	targetNamespace="urn:oasis:names:tc:dss:2.0:base:schema"
	elementFormDefault="qualified" attributeFormDefault="unqualified"
	jxb:version="2.1" jxb:extensionBindingPrefixes="annox xjc">

<!-- TBD: Cleanup of ns-Definitions necessary. 
	
	ak: there us a glitch with saxon NOT dropping surplus namespaces. In the worst case a regular expression is required should do the job ...
	-->

	<xs:import namespace="http://www.w3.org/XML/1998/namespace"; schemaLocation="http://www.w3.org/2001/xml.xsd"; />

	<xs:complexType name="NsPrefixMappingType" es:nonEmpty="true">
		<xs:sequence>
			<xs:element name="NamespaceURI" type="xs:anyURI" es:jsonName="uri"/>
			<xs:element name="NamespacePrefix" type="xs:string" es:jsonName="pre"/>
		</xs:sequence>
	</xs:complexType>

<!-- TBD: Content-element is probably not nice in every case.
     Better resort to "old AnyType" and solve problem by
     using <xs:redefine>. 

	ak: The replacement of the xs:any within the AnyType is not limited to the role of an extension point but it also serves as a container for 
	arbitray data, e.g. within dss:Property. The content of the 'value' element cannot be typed down by a 'redefine' 
	so it must be replaced by a sequence of base64 blobs. 
	The 'Content' sequence introduces some overhead when used in cases where only one single element to be transported. But the 'version 1' AnyType 
	includes an unbounded sequence of xs:anys and an xs:any itself can contain a sequence of multiple elements. The 'Content' sequence cannot 
	be dropped without breaking backward compatiblility and introducing specific handling for de-serializing of Nodesets. 
	
	
	<xs:complexType name="AnyType">
		<xs:sequence>
			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" es:jsonName="content"/>
		</xs:sequence>
	</xs:complexType>
-->

	<xs:complexType name="AnyType" es:nonEmpty="true">
		<xs:sequence>
			<xs:element name="Content" minOccurs="1" maxOccurs="unbounded" es:jsonName="content">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Base64Content" type="xs:base64Binary" es:jsonName="b64Content"/>
					</xs:sequence>
					<xs:attribute name="MimeType" type="xs:string" use="optional" es:jsonName="mimeType"/>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>


	<!-- xs:element name="Language" type="xs:language" /-->
	<xs:complexType name="InternationalStringType" es:nonEmpty="true">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute ref="xml:lang" use="required" es:jsonName="lang"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="DigestInfoType" es:nonEmpty="true">
		<xs:sequence>
			<xs:element name="DigestMethod" type="xs:string" es:jsonName="alg"/>
			<xs:element name="DigestValue" type="xs:base64Binary" es:jsonName="value"/>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="AttachmentReferenceType" es:nonEmpty="true">
		<xs:sequence>
			<xs:element name="DigestInfo" type="dsb:DigestInfoType" minOccurs="0" maxOccurs="unbounded" es:jsonName="di"/>
		</xs:sequence>
		<xs:attribute name="AttRefURI" type="xs:anyURI" use="required" es:jsonName="attURI"/>
	</xs:complexType>

	<xs:element name="Base64Data" type="dsb:Base64DataType" />
	<xs:complexType name="Base64DataType" es:nonEmpty="true">
		<xs:choice>
			<xs:element name="Value" type="xs:base64Binary" es:jsonName="value"/>
			<xs:element name="AttRef" type="dsb:AttachmentReferenceType" es:jsonName="attRef"/>
		</xs:choice>
		<xs:attribute name="MimeType" type="xs:string" use="optional" es:jsonName="mimeType"/>
		<xs:attribute name="ID" type="xs:ID" use="optional" es:jsonName="ID"/>
		<xs:attribute name="IDREF" type="xs:IDREF" use="optional" es:jsonName="IDREF"/>
	</xs:complexType>

	<xs:element name="Result" type="dsb:ResultType" />
	<xs:complexType name="ResultType" es:nonEmpty="true">
		<xs:sequence>
			<xs:element name="ResultMajor" es:jsonName="maj">
				<xs:simpleType>
					<xs:restriction base="xs:anyURI">
						<xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:Success"/>
						<xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:RequesterError"/>
						<xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:ResponderError"/>
						<xs:enumeration value="urn:oasis:names:tc:dss:1.0:resultmajor:InsufficientInformation"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:element>
			<xs:element name="ResultMinor" type="xs:anyURI" minOccurs="0" es:jsonName="min"/>
			<xs:element name="ResultMessage" type="dsb:InternationalStringType" minOccurs="0" es:jsonName="msg"/>
		</xs:sequence>
	</xs:complexType>


<!-- TBD: The semantics of requesting one or more Profile(s) is not entirely clear. 
     The general modularisation concept should be discussed and defined first. 
	
	ak: The clients adds all the required profile to the 'Profile' sequence available at a given endpoint which provides a schema 
	representing the supported set of profiles. The set of 'OptionalInputs' and 'OptionalOutputs' defined by the different 
	profiles (if the profiles requires these elements) reside in different namespaces. 
	
	The server may apply profile not requested explicitly. All applied profiles are listed in the Response type.
	
	-->

	<xs:element name="OptionalInputs" type="dsb:AnyType"/>

	<xs:element name="OptionalOutputs" type="dsb:AnyType"/>

<!-- TBD: It might be clearer, if Profile would be RequestedProfile. 
	
	ak: To ensure some recognizability the 'Profile' element preserve the name of the 'vesion 1' attribute 'Profile'.
	Within an element having 'Request' in its name it smells a bit redundant to prefix the Profile element with 'Request'. 
	
	-->

	<xs:complexType name="RequestBaseType" abstract="true" >
		<xs:sequence>
			<xs:element name="Profile" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded" es:jsonName="profile"/>
		</xs:sequence>
		<xs:attribute name="RequestID" type="xs:string" use="optional" es:jsonName="reqID"/>

	</xs:complexType>
	
	<xs:complexType name="ResponseBaseType" abstract="true">
		<xs:sequence>
			<xs:element name="Result" type="dsb:ResultType" es:jsonName="result"/>
			<xs:element name="AppliedProfile" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded" es:jsonName="profile"/>
		</xs:sequence>
		<xs:attribute name="RequestID" type="xs:string" use="optional" es:jsonName="reqID"/>

	</xs:complexType>


	<xs:element name="ServicePolicy" type="xs:anyURI" />

	<xs:element name="ServiceDescription" type="xs:anyURI" />

	<!-- >xs:element name="AdditionalProfile" type="xs:anyURI" />	
		<xs:element name="Schemas" type="dss:SchemasType" />
		<xs:complexType name="SchemasType">
		<xs:sequence>
		<xs:element name="Schema" type="dss:DocumentType" maxOccurs="unbounded" es:jsonName="schema" />
		</xs:sequence>
		</xs:complexType>
		<xs:element name="Schema" type="dss:DocumentType" />
		
		<xs:element name="SignatureType" type="xs:anyURI" />
		
		<xs:element name="KeySelector" type="dss:KeySelectorType" />
		<xs:complexType name="KeySelectorType">
		<xs:choice>
		<xs:element name="X509Digest" type="dss:X509DigestType" es:jsonName="x509Digest" />
		<xs:element name="X509SubjectName" type="xs:string" es:jsonName="subject" />
		<xs:element name="X509SKI" type="xs:base64Binary" es:jsonName="ski" />
		<xs:element name="X509Certificate" type="xs:base64Binary" es:jsonName="cert" />
		<xs:element name="KeyName" type="xs:string" es:jsonName="name" />
		</xs:choice>
		</xs:complexType>
		<xs:complexType name="X509DigestType">
		<xs:simpleContent>
		<xs:extension base="xs:base64Binary">
		<xs:attribute name="Algorithm" type="xs:string" use="required"
		es:jsonName="algo" />
		</xs:extension>
		</xs:simpleContent>
		</xs:complexType-->

	<!-- =================================== -->
	<!-- Info                                -->
	<!-- =================================== -->

	<xs:element name="Info" type="dsb:InfoType" />

	<xs:complexType name="InfoType">
		<xs:sequence>
			<xs:element name="Call" type="dsb:DescriptionType" maxOccurs="unbounded" minOccurs="1" es:jsonName="call" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="DescriptionType">
		<xs:sequence>
			<xs:element name="Name" type="xs:string" es:jsonName="name" />
			<xs:element name="Specification" type="xs:anyURI" es:jsonName="spec" />
			<xs:element name="Schema" type="xs:anyURI" es:jsonName="schema" />
			<xs:element name="Option" type="dsb:DescriptionType" es:jsonName="opt" maxOccurs="unbounded" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>


</xs:schema>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]