<?xml version="1.0" encoding="UTF-8"?> <!--Schema for OSCI Message Meta Data - last edited 2015-02-19--><!--Change 2015-02-19: MessageType amended by mandatory attribte @payloadSchema--><!--Change 2015-01-23: Alignment with XTA/KoSIT: introduced KeyCodeType, changed PropertyType, BusinessScenarioType, MessageType; ServiceQuality (to #any type), SecurityToken may carry IDREF attribute to token in payload now; usage attribute mandatory now--><!--Change 2014-11-30: xoev basis data type schema version changed from 1_0 to 1_1--><!--Last recent changes: Codelist for BusinessScenarioTypes defined and imported--><!--Changes: 2.0.2: Adoption of xoev:Codelist type for some elements; eliminating QName typed attributes/elements; PartyType elements now may include optional SecurityTokens (as e.g. used in XVergabe)--><xs:schema targetNamespace="http://www.osci.eu/ws/2014/10/transport" elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:oscimeta="http://www.osci.eu/ws/2014/10/transport" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xoev-dt="http://xoev.de/schemata/basisdatentypen/1_1"> <xs:import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="ws-addr.xsd"/> <xs:import namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd"/> <xs:import namespace="http://xoev.de/schemata/basisdatentypen/1_1" schemaLocation="xoev-basisdatentypen.xsd"/> <xs:simpleType name="NonEmptyStringType"> <xs:restriction base="xs:string"> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="NonEmptyURIType"> <xs:restriction base="xs:anyURI"> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType> <xs:complexType name="AnyType" mixed="true"> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:any namespace="##any" processContents="lax"/> </xs:sequence> <xs:anyAttribute namespace="##any"/> </xs:complexType> <!--End AnyType--> <xs:complexType name="ReceiptRequestType"> <xs:sequence> <xs:element name="Submission" minOccurs="0"> <xs:annotation> <xs:documentation>Sending node: Message accepted for delivery and submitted</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Relay" minOccurs="0"> <xs:annotation> <xs:documentation>Active node on the delivery route: Message forwarded to next hop</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Delivery" minOccurs="0"> <xs:annotation> <xs:documentation>Destination node:Successful delivery to Recipient in synchronous scenarios, to MsgBox if asynchronous</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Fetch" minOccurs="0"> <xs:annotation> <xs:documentation>Only MsgBox node: Initial fetch of Message by Recipient from his MsgBox</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Reception" minOccurs="0"> <xs:annotation> <xs:documentation>Ultimate Recipient node, after acceptance of message, after successful decryption of payload</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReceiptTo" type="wsa:EndpointReferenceType" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="DeliveryAttributesType"> <xs:annotation> <xs:documentation>Message delivery time instants, quality and receipts requested</xs:documentation> </xs:annotation> <xs:sequence> <xs:annotation> <xs:documentation>Timestamps, priority etc.</xs:documentation> </xs:annotation> <xs:element name="Origin" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Production of content by Requester respective (response) Provider</xs:documentation> </xs:annotation> </xs:element> <xs:element name="InitialSend" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Time when delivery was started (submission by Senders node)</xs:documentation> </xs:annotation> </xs:element> <xs:element name="NotBefore" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Time when sending node should submit message</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ObsoleteAfter" type="xs:date" minOccurs="0"> <xs:annotation> <xs:documentation>Date, when this message is obsolete; may be set by Initiator</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Delivery" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Time of entry in a Recipients MsgBox or reception by Recipient in synchronous case</xs:documentation> </xs:annotation> </xs:element> <xs:element name="InitialFetch" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Time of first comitted fetch from MsgBox by recipient</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Reception" type="xs:dateTime" minOccurs="0"> <xs:annotation> <xs:documentation>Reception time set by the Ultimate Recipient ("Reader", target application)</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ServiceQuality" type="oscimeta:NonEmptyStringType" minOccurs="0"> <xs:annotation> <xs:documentation>Property like priority etc. - XTA here points to "Service Profile"</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ReceiptRequests" type="oscimeta:ReceiptRequestType" minOccurs="0"> <xs:annotation> <xs:documentation>Receipts requested by sender or author</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="SecurityToken"> <xs:complexType> <xs:choice> <xs:element ref="wsse:BinarySecurityToken"/> <xs:element ref="wsse:SecurityTokenReference"/> <xs:element ref="wsse:UsernameToken"/> </xs:choice> <xs:attribute name="usage" use="required"> <xs:simpleType> <xs:restriction base="xs:NMTOKEN"> <xs:enumeration value="AUTHENTICATION"/> <xs:enumeration value="ENCRYPTION"/> <xs:enumeration value="SIGNATURE"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:attribute name="payloadRef" type="xs:IDREF"/> </xs:complexType> </xs:element> <xs:complexType name="PartyType"> <xs:annotation> <xs:documentation>Logical identifier and optional security tokens of that entity (binary, may carry SAML, too)</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="Identifier" type="oscimeta:PartyIdentifierType"/> <xs:element ref="oscimeta:SecurityToken" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="PartyIdentifierType"> <xs:annotation> <xs:documentation>Value of generic party identifier, as classified by @type attribute, e.g.: Prefix:Kennung</xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="xs:normalizedString"> <xs:attribute name="type" type="oscimeta:NonEmptyStringType"> <xs:annotation> <xs:documentation>Orientation: ebMS Core: type, how to interpret Party-Id value, e.g.: xöv oder Justiz</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="name" type="oscimeta:NonEmptyStringType"> <xs:annotation> <xs:documentation>optional "friendly name" value for displaying in user agents (as e.g. known from eMail)</xs:documentation> </xs:annotation> </xs:attribute> <xs:attribute name="category" type="oscimeta:NonEmptyStringType"> <xs:annotation> <xs:documentation>Concrete role of party in business scenario (e.g. "buyer", "Meldehörde", "Standesamt"...)</xs:documentation> </xs:annotation> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:element name="Author" type="oscimeta:PartyType"> <xs:annotation> <xs:documentation>Requester resp. (response-) Provider</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Reader" type="oscimeta:PartyType"> <xs:annotation> <xs:documentation>Destinations of the message</xs:documentation> </xs:annotation> </xs:element> <xs:complexType name="OriginatorsType"> <xs:sequence> <xs:element ref="oscimeta:Author"/> <xs:element ref="oscimeta:Sender" minOccurs="0"/> <xs:element name="ReplyTo" type="oscimeta:PartyType" minOccurs="0"> <xs:annotation> <xs:documentation>If response expected different from value outlined in "From" address</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="DestinationsType"> <xs:sequence> <xs:element ref="oscimeta:Reader"> <xs:annotation> <xs:documentation>Ultimate target of the message</xs:documentation> </xs:annotation> </xs:element> <xs:element ref="oscimeta:OtherDestinations" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="ProcessIdentifierType"> <xs:annotation> <xs:documentation>Process ID message is realated to</xs:documentation> </xs:annotation> <xs:simpleContent> <xs:extension base="oscimeta:NonEmptyStringType"> <xs:attribute name="ProccesName" type="oscimeta:NonEmptyStringType"> <xs:annotation> <xs:documentation>Process may have a name, e.g. "order"</xs:documentation> </xs:annotation> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> <xs:complexType name="MsgIdentificationType"> <xs:sequence> <xs:element ref="wsa:MessageID"/> <xs:element name="In-Reply-To" type="wsa:AttributedURIType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Referenced application level Message-Id(s)</xs:documentation> </xs:annotation> </xs:element> <xs:element name="ProcessRef" minOccurs="0"> <xs:annotation> <xs:documentation>References to business process-id's (like ebMS Conversation-Id, "Aktenzeichen" in Germany)</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="Requester" type="oscimeta:ProcessIdentifierType" minOccurs="0"> <xs:annotation> <xs:documentation>Ref on requester (Source Application) side</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Responder" type="oscimeta:ProcessIdentifierType" minOccurs="0"> <xs:annotation> <xs:documentation>Ref on responder (Target Application) side, if different</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="KeyCodeType"> <xs:complexContent> <xs:restriction base="xoev-dt:Code"> <xs:sequence> <xs:element name="code" type="xs:token" form="unqualified"/> <xs:element name="name" type="xs:normalizedString" form="unqualified" minOccurs="0"/> </xs:sequence> <xs:attribute name="listURI" type="xs:anyURI" use="required"/> <xs:attribute name="listVersionID" type="xs:normalizedString" use="required"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexType name="PropertyType"> <xs:sequence> <xs:element name="Key" type="oscimeta:KeyCodeType"/> <xs:element name="Value" type="oscimeta:NonEmptyStringType"/> </xs:sequence> </xs:complexType> <xs:complexType name="MessagePropertiesType"> <xs:sequence> <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="QualifierType"> <xs:sequence> <xs:element name="Subject" type="xs:string" minOccurs="0"> <xs:annotation> <xs:documentation>Message subject text (informational)</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Service" type="xs:anyURI"> <xs:annotation> <xs:documentation>Distinct service in a certain business scenario context; in the XÖV context this is the "Dienste URI"</xs:documentation> </xs:annotation> </xs:element> <xs:element name="BusinessScenario"> <xs:annotation> <xs:documentation>Domain qualifier, e.g. Meldewesen, XVergabe...</xs:documentation> </xs:annotation> <xs:complexType> <xs:choice> <xs:element name="Defined" type="oscimeta:KeyCodeType"/> <xs:element name="Undefined" type="xs:normalizedString"/> </xs:choice> </xs:complexType> </xs:element> <xs:element name="MessageType"> <xs:annotation> <xs:documentation>Payload: Type of document or message. MessageTypes normally bound to specific BusinessScenario</xs:documentation> </xs:annotation> <xs:complexType> <xs:complexContent> <xs:extension base="oscimeta:KeyCodeType"> <xs:attribute name="payloadSchema" type="oscimeta:NonEmptyURIType" use="required"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="DeliveryAttributes" type="oscimeta:DeliveryAttributesType"> <xs:annotation> <xs:documentation>Time stamps, receipts to be generated, service quality</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Originators" type="oscimeta:OriginatorsType"> <xs:annotation> <xs:documentation>Message originators and reply address</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Destinations" type="oscimeta:DestinationsType"> <xs:annotation> <xs:documentation>Actual and other destinations of Message</xs:documentation> </xs:annotation> </xs:element> <xs:element name="MsgIdentification" type="oscimeta:MsgIdentificationType"> <xs:annotation> <xs:documentation>Message ID and Message relations</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Qualifier" type="oscimeta:QualifierType"> <xs:annotation> <xs:documentation>General payload properties, common to all scenarios</xs:documentation> </xs:annotation> </xs:element> <xs:element name="MessageProperties"> <xs:annotation> <xs:documentation>Scenarios specific payload properties, to be agreed upon per scenario</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="Property" type="oscimeta:PropertyType" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Sender" type="oscimeta:PartyType"> <xs:annotation> <xs:documentation>Sending node, entry may be added by Sender node</xs:documentation> </xs:annotation> </xs:element> <xs:element name="OtherDestinations"> <xs:annotation> <xs:documentation>Other destinations of message - informational, as known from e-mail</xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="oscimeta:OtherReaders" maxOccurs="unbounded"/> <xs:element ref="oscimeta:CcReaders" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="OtherReaders" type="oscimeta:PartyIdentifierType"/> <xs:element name="CcReaders" type="oscimeta:PartyIdentifierType"> <xs:annotation> <xs:documentation>Destinations in cc role</xs:documentation> </xs:annotation> </xs:element> <xs:element name="MessageMetaData"> <xs:complexType> <xs:sequence> <xs:element ref="oscimeta:DeliveryAttributes"/> <xs:element ref="oscimeta:Originators"/> <xs:element ref="oscimeta:Destinations"/> <xs:element ref="oscimeta:MsgIdentification"/> <xs:element ref="oscimeta:Qualifier"/> <xs:element ref="oscimeta:MessageProperties" minOccurs="0"/> <xs:element name="MsgSize" type="xs:positiveInteger" minOccurs="0"> <xs:annotation> <xs:documentation>Message size in bytes</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> <xs:attribute name="TestMsg" type="xs:boolean" default="false"> <xs:annotation> <xs:documentation>"true", if test-message; defaults to "false"</xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> </xs:schema>