[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]