Difference between Peppol and OASIS BDXR
-
OpenPeppol SMP specification
-
OASIS BDXR SMP 1.0 specification
This section lists the major differences between the OpenPeppol SMP specification and the OASIS BDXR 1.0 specification.
- Namespace URI
- Extension handling
- Data type of endpoint URI
- Changed cardinalities
Previous to the OpenPeppol SMP specification 1.2.0 the used Canonicalization algorithms was different. In the meantime the algorithm is http://www.w3.org/2006/12/xml-c14n11
for both.
The PEPPOPL SMP specification uses 2 different (self-defined) namespaces in their structures:
Additionally WS Addressing and XMLDSig namespaces need to be used.
The OASIS BDXR SMP specification uses the following namespace in their structures:
Additionally the XMLDSig namespace may be used.
The Peppol SMP specification allows for 0-1 extensions per ServiceGroup
where each extension could only be an XML element.
The OASIS BDXR SMP specification allows for 0-n extensions per ServiceGroup
and offers a more sophisticated data model so that extensions can be typed.
In the original Peppol SMP specification the element containing the endpoint URL is defines as follows:
{http://www.w3.org/2005/08/addressing}EndpointReference
This references a complex data type from the Web Services Addressing 1.0 specification and was technically difficult to handle.
The OASIS BDXR SMP specification changed this to a simple element called ElementURI
with data type xs:anyURI
.
The following cardinalities were changed:
-
Endpoint/RequireBusinessLevelSignature
- Peppol: mandatory, no default value
- OASIS: optional, default value
false
-
Endpoint/@transportProfile
- Peppol: optional (I think by accident)
- OASIS: mandatory
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ServiceMetadataPublishing"
targetNamespace="http://busdox.org/serviceMetadata/publishing/1.0/"
elementFormDefault="qualified"
xmlns="http://busdox.org/serviceMetadata/publishing/1.0/"
xmlns:ids="http://busdox.org/transport/identifiers/1.0/"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" />
<xs:import schemaLocation="Identifiers-1.0.xsd" namespace="http://busdox.org/transport/identifiers/1.0/" />
<xs:import schemaLocation="ws-addr.xsd" namespace="http://www.w3.org/2005/08/addressing"/>
<!-- unofficial extensions -->
<xs:element name="ServiceGroupReferenceList" type="ServiceGroupReferenceListType"/>
<xs:complexType name="ServiceGroupReferenceListType">
<xs:sequence>
<xs:element name="ServiceGroupReference" type="ServiceGroupReferenceType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceGroupReferenceType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="href" type="xs:anyURI" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="CompleteServiceGroup" type="CompleteServiceGroupType"/>
<xs:complexType name="CompleteServiceGroupType">
<xs:sequence>
<xs:element ref="ServiceGroup" />
<xs:element ref="ServiceMetadata" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<!-- officially specified SMP stuff -->
<xs:element name="ServiceGroup" type="ServiceGroupType"/>
<xs:element name="ServiceMetadata" type="ServiceMetadataType"/>
<xs:element name="SignedServiceMetadata" type="SignedServiceMetadataType"/>
<xs:complexType name="SignedServiceMetadataType">
<xs:annotation>
<xs:documentation>The SignedServiceMetadata structure is a ServiceMetadata structure
that has been signed by the ServiceMetadataPublisher, according to governance policies.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="ServiceMetadata">
<xs:annotation>
<xs:documentation>The ServiceMetadata element covered by the signature.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="ds:Signature">
<xs:annotation>
<xs:documentation>Represents an enveloped XML signature over the SignedServiceMetadata element.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceMetadataType">
<xs:annotation>
<xs:documentation>
This data structure represents Metadata about a specific electronic service.
The role of the ServiceMetadata structure is to associate a participant identifier
with the ability to receive a specific document type over a specific transport. It
also describes which business processes a document can participate in, and various
operational data such as service activation and expiration times.
The ServiceMetadata resource contains all the metadata about a service that a sender
Access Point needs to know in order to send a message to that service.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:choice>
<xs:element name="ServiceInformation" type="ServiceInformationType">
<xs:annotation>
<xs:documentation>Contains service information for an actual service registration, rather than a redirect to another SMP</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Redirect" type="RedirectType">
<xs:annotation>
<xs:documentation>
For recipients that want to associate more than one SMP with their participant identifier,
they may redirect senders to an alternative SMP for specific document types. To achieve
this, the ServiceMetadata element defines the optional element ‘Redirect’. This element
holds the URL of the alternative SMP, as well as the Subject Unique Identifier of the
destination SMPs certificate used to sign its resources.
In the case where a client encounters such a redirection element, the client MUST follow
the first redirect reference to the alternative SMP. If the SignedServiceMetadata resource
at the alternative SMP also contains a redirection element, the client SHOULD NOT follow
that redirect. It is the responsibility of the client to enforce this constraint.
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceInformationType">
<xs:sequence>
<xs:element ref="ids:ParticipantIdentifier">
<xs:annotation>
<xs:documentation>The participant identifier. Comprises the identifier, and an identifier scheme. This identifier MUST have the same value of the {id} part of the URI of the enclosing ServiceMetadata resource.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element ref="ids:DocumentIdentifier">
<xs:annotation>
<xs:documentation>Represents the type of document that the recipient is able to handle.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ProcessList" type="ProcessListType">
<xs:annotation>
<xs:documentation>Represents the processes that a specific document type can participate in, and endpoint address and binding information. Each process element describes a specific business process that accepts this type of document as input and holds a list of endpoint addresses (in the case that the service supports multiple transports) of services that implement the business process, plus information about the transport used for each endpoint.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Extension" type="ExtensionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The extension element may contain any XML element. Clients MAY ignore this element.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProcessListType">
<xs:annotation>
<xs:documentation>List of processes</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Process" type="ProcessType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProcessType">
<xs:sequence>
<xs:element ref="ids:ProcessIdentifier">
<xs:annotation>
<xs:documentation>The identifier of the process.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ServiceEndpointList" type="ServiceEndpointList">
<xs:annotation>
<xs:documentation>List of one or more endpoints that support this process.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Extension" type="ExtensionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The extension element may contain any XML element. Clients MAY ignore this element.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceEndpointList">
<xs:annotation>
<xs:documentation>Contains a list of all endpoint</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="Endpoint" type="EndpointType" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Endpoint represents the technical endpoint and address type of the recipient, as an URL.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EndpointType">
<xs:sequence>
<xs:element ref="wsa:EndpointReference">
<xs:annotation>
<xs:documentation>The address of an endpoint, as an WS-Addressing Endpoint Reference</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="RequireBusinessLevelSignature" type="xs:boolean">
<xs:annotation>
<xs:documentation>Set to "true" if the recipient requires business-level signatures for the message, meaning a signature applied to the business message before the message is put on the transport. This is independent of the transport-level signatures that a specific transport profile, such as the START profile, might mandate. This flag does not indicate which type of business-level signature might be required. Setting or consuming business-level signatures would typically be the responsibility of the final senders and receivers of messages, rather than a set of APs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="MinimumAuthenticationLevel" type="xs:string" minOccurs="0">
<xs:annotation>
<xs:documentation>Indicates the minimum authentication level that recipient requires. The specific semantics of this field is defined in a specific instance of the BUSDOX infrastructure. It could for example reflect the value of the "urn:eu:busdox:attribute:assurance-level" SAML attribute defined in the START specification.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ServiceActivationDate" type="xs:dateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>Activation date of the service. Senders should ignore services that are not yet activated.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ServiceExpirationDate" type="xs:dateTime" minOccurs="0">
<xs:annotation>
<xs:documentation>Expiration date of the service. Senders should ignore services that are expired.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Certificate" type="xs:string">
<xs:annotation>
<xs:documentation>Holds the complete signing certificate of the recipient AP, as a PEM base 64 encoded X509 DER formatted value.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ServiceDescription" type="xs:string">
<xs:annotation>
<xs:documentation>A human readable description of the service</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TechnicalContactUrl" type="xs:anyURI">
<xs:annotation>
<xs:documentation>Represents a link to human readable contact information. This might also be an email address.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="TechnicalInformationUrl" type="xs:anyURI" minOccurs="0">
<xs:annotation>
<xs:documentation>A URL to human readable documentation of the service format. This could for example be a web site containing links to XML Schemas, WSDLs, Schematrons and other relevant resources.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Extension" type="ExtensionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The extension element may contain any XML element. Clients MAY ignore this element.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="transportProfile" type="xs:string">
<xs:annotation>
<xs:documentation>Indicates the type of BUSDOX transport that is being used between access points, e.g. the BUSDOX START profile. This specification defines the following identifier URI which denotes the BUSDOX START transport: "busdox-transport-start"</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ServiceGroupType">
<xs:annotation>
<xs:documentation>The ServiceGroup structure represents a set of services
associated with a specific participant identifier that is handled by a
specific Service Metadata Publisher. The ServiceGroup structure holds a
list of references to SignedServiceMetadata resources in the ServiceList
structure.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="ids:ParticipantIdentifier">
<xs:annotation>
<xs:documentation>Represents the business level endpoint key and key type, e.g. a DUNS or GLN number that is associated with a group of services. </xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="ServiceMetadataReferenceCollection" type="ServiceMetadataReferenceCollectionType">
<xs:annotation>
<xs:documentation>The ServiceMetadataReferenceCollection structure holds a list of references to SignedServiceMetadata structures. From this list, a sender can follow the references to get each SignedServiceMetadata structure.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Extension" type="ExtensionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The extension element may contain any XML element. Clients MAY ignore this element.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceMetadataReferenceCollectionType">
<xs:annotation>
<xs:documentation>Contains the URL to a specific SignedServiceMetadata instance. Note
that references MUST refer to SignedServiceMetadata records that are signed by the
certificate of the SMP. It must not point to SignedServiceMetadata resources published
by external SMPs.</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="ServiceMetadataReference" type="ServiceMetadataReferenceType" minOccurs="0" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceMetadataReferenceType">
<xs:attribute name="href" type="xs:anyURI">
<xs:annotation>
<xs:documentation>Contains the URL to a specific SignedServiceMetadata instance.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="RedirectType">
<xs:sequence>
<xs:element name="CertificateUID" type="xs:string">
<xs:annotation>
<xs:documentation>Holds the Subject Unique Identifier of the certificate of the destination SMP. A client SHOULD validate that the Subject Unique Identifier of the certificate used to sign the resource at the destination SMP matches the Subject Unique Identifier published in the redirecting SMP.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Extension" type="ExtensionType" minOccurs="0">
<xs:annotation>
<xs:documentation>The extension element may contain any XML element. Clients MAY ignore this element.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="href" type="xs:anyURI">
<xs:annotation>
<xs:documentation>The destination URL of the redirect.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ExtensionType">
<xs:annotation>
<xs:documentation>
Child elements of the [smp:Extension] element are known as "custom
extension elements". Extension points may be used for optional extensions
of service metadata. This implies:
* Extension elements added to a specific Service Metadata resource MUST be ignorable
by any client of the transport infrastructure. The ability to parse and adjust client
behavior based on an extension element MUST NOT be a prerequisite for a client to
locate a service, or to make a successful request at the referenced service.
* A client MAY ignore any extension element added to specific service metadata
resource instances.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:any processContents="skip"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Identifiers"
targetNamespace="http://busdox.org/transport/identifiers/1.0/"
elementFormDefault="qualified"
xmlns="http://busdox.org/transport/identifiers/1.0/"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>
Common identifiers for WSDLs and Schemas
</xs:documentation>
</xs:annotation>
<xs:element name="ParticipantIdentifier" type="ParticipantIdentifierType" />
<xs:element name="DocumentIdentifier" type="DocumentIdentifierType" />
<xs:element name="ProcessIdentifier" type="ProcessIdentifierType" />
<xs:element name="RecipientIdentifier" type="ParticipantIdentifierType" />
<xs:element name="SenderIdentifier" type="ParticipantIdentifierType" />
<xs:element name="MessageIdentifier" type="MessageIdentifierType" />
<xs:element name="ChannelIdentifier" type="ChannelIdentifierType" />
<xs:complexType name="ParticipantIdentifierType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="DocumentIdentifierType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ProcessIdentifierType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="MessageIdentifierType">
<xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="ChannelIdentifierType">
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<!--
W3C XML Schema defined in the Web Services Addressing 1.0 specification
http://www.w3.org/TR/ws-addr-core
Copyright © 2005 World Wide Web Consortium,
(Massachusetts Institute of Technology, European Research Consortium for
Informatics and Mathematics, Keio University). All Rights Reserved. This
work is distributed under the W3C® Software License [1] in the hope that
it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[1] http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
$Id: ws-addr.xsd,v 1.2 2008/07/23 13:38:16 plehegar Exp $
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2005/08/addressing" targetNamespace="http://www.w3.org/2005/08/addressing" blockDefault="#all" elementFormDefault="qualified" finalDefault="" attributeFormDefault="unqualified">
<!-- Constructs from the WS-Addressing Core -->
<xs:element name="EndpointReference" type="tns:EndpointReferenceType"/>
<xs:complexType name="EndpointReferenceType" mixed="false">
<xs:sequence>
<xs:element name="Address" type="tns:AttributedURIType"/>
<xs:element ref="tns:ReferenceParameters" minOccurs="0"/>
<xs:element ref="tns:Metadata" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="ReferenceParameters" type="tns:ReferenceParametersType"/>
<xs:complexType name="ReferenceParametersType" mixed="false">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="Metadata" type="tns:MetadataType"/>
<xs:complexType name="MetadataType" mixed="false">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
<xs:element name="MessageID" type="tns:AttributedURIType"/>
<xs:element name="RelatesTo" type="tns:RelatesToType"/>
<xs:complexType name="RelatesToType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute name="RelationshipType" type="tns:RelationshipTypeOpenEnum" use="optional" default="http://www.w3.org/2005/08/addressing/reply"/>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="RelationshipTypeOpenEnum">
<xs:union memberTypes="tns:RelationshipType xs:anyURI"/>
</xs:simpleType>
<xs:simpleType name="RelationshipType">
<xs:restriction base="xs:anyURI">
<xs:enumeration value="http://www.w3.org/2005/08/addressing/reply"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="ReplyTo" type="tns:EndpointReferenceType"/>
<xs:element name="From" type="tns:EndpointReferenceType"/>
<xs:element name="FaultTo" type="tns:EndpointReferenceType"/>
<xs:element name="To" type="tns:AttributedURIType"/>
<xs:element name="Action" type="tns:AttributedURIType"/>
<xs:complexType name="AttributedURIType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- Constructs from the WS-Addressing SOAP binding -->
<xs:attribute name="IsReferenceParameter" type="xs:boolean"/>
<xs:simpleType name="FaultCodesOpenEnumType">
<xs:union memberTypes="tns:FaultCodesType xs:QName"/>
</xs:simpleType>
<xs:simpleType name="FaultCodesType">
<xs:restriction base="xs:QName">
<xs:enumeration value="tns:InvalidAddressingHeader"/>
<xs:enumeration value="tns:InvalidAddress"/>
<xs:enumeration value="tns:InvalidEPR"/>
<xs:enumeration value="tns:InvalidCardinality"/>
<xs:enumeration value="tns:MissingAddressInEPR"/>
<xs:enumeration value="tns:DuplicateMessageID"/>
<xs:enumeration value="tns:ActionMismatch"/>
<xs:enumeration value="tns:MessageAddressingHeaderRequired"/>
<xs:enumeration value="tns:DestinationUnreachable"/>
<xs:enumeration value="tns:ActionNotSupported"/>
<xs:enumeration value="tns:EndpointUnavailable"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="RetryAfter" type="tns:AttributedUnsignedLongType"/>
<xs:complexType name="AttributedUnsignedLongType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:unsignedLong">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="ProblemHeaderQName" type="tns:AttributedQNameType"/>
<xs:complexType name="AttributedQNameType" mixed="false">
<xs:simpleContent>
<xs:extension base="xs:QName">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="ProblemIRI" type="tns:AttributedURIType"/>
<xs:element name="ProblemAction" type="tns:ProblemActionType"/>
<xs:complexType name="ProblemActionType" mixed="false">
<xs:sequence>
<xs:element ref="tns:Action" minOccurs="0"/>
<xs:element name="SoapAction" minOccurs="0" type="xs:anyURI"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/bdxr/ns/SMP/2016/05" id="ServiceMetadataPublishing">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" />
<xs:element name="ServiceGroup" type="ServiceGroupType"/>
<xs:element name="ServiceMetadata" type="ServiceMetadataType"/>
<xs:element name="SignedServiceMetadata" type="SignedServiceMetadataType"/>
<xs:complexType name="SignedServiceMetadataType">
<xs:sequence>
<xs:element ref="ServiceMetadata"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceMetadataType">
<xs:choice>
<xs:element name="ServiceInformation" type="ServiceInformationType"/>
<xs:element name="Redirect" type="RedirectType"/>
</xs:choice>
</xs:complexType>
<xs:complexType name="ServiceInformationType">
<xs:sequence>
<xs:element ref="ParticipantIdentifier"/>
<xs:element ref="DocumentIdentifier"/>
<xs:element name="ProcessList" type="ProcessListType"/>
<xs:element name="Extension" type="ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProcessListType">
<xs:sequence>
<xs:element name="Process" type="ProcessType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProcessType">
<xs:sequence>
<xs:element ref="ProcessIdentifier"/>
<xs:element name="ServiceEndpointList" type="ServiceEndpointList"/>
<xs:element name="Extension" type="ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceEndpointList">
<xs:sequence>
<xs:element name="Endpoint" type="EndpointType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="EndpointType">
<xs:sequence>
<xs:element name="EndpointURI" type="xs:anyURI"/>
<xs:element name="RequireBusinessLevelSignature" type="xs:boolean" minOccurs="0" default="false"/>
<xs:element name="MinimumAuthenticationLevel" type="xs:string" minOccurs="0"/>
<xs:element name="ServiceActivationDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="ServiceExpirationDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="Certificate" type="xs:base64Binary"/>
<xs:element name="ServiceDescription" type="xs:string"/>
<xs:element name="TechnicalContactUrl" type="xs:anyURI"/>
<xs:element name="TechnicalInformationUrl" type="xs:anyURI" minOccurs="0"/>
<xs:element name="Extension" type="ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="transportProfile" type="xs:string" use="required"/>
</xs:complexType>
<xs:complexType name="ServiceGroupType">
<xs:sequence>
<xs:element ref="ParticipantIdentifier"/>
<xs:element name="ServiceMetadataReferenceCollection" type="ServiceMetadataReferenceCollectionType"/>
<xs:element name="Extension" type="ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceMetadataReferenceCollectionType">
<xs:sequence>
<xs:element name="ServiceMetadataReference" type="ServiceMetadataReferenceType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceMetadataReferenceType">
<xs:attribute name="href" type="xs:anyURI"/>
</xs:complexType>
<xs:complexType name="RedirectType">
<xs:sequence>
<xs:element name="CertificateUID" type="xs:string"/>
<xs:element name="Extension" type="ExtensionType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="href" type="xs:anyURI" use="required"/>
</xs:complexType>
<xs:element name="ParticipantIdentifier" type="ParticipantIdentifierType"/>
<xs:element name="DocumentIdentifier" type="DocumentIdentifierType"/>
<xs:element name="ProcessIdentifier" type="ProcessIdentifierType"/>
<xs:element name="RecipientIdentifier" type="ParticipantIdentifierType"/>
<xs:element name="SenderIdentifier" type="ParticipantIdentifierType"/>
<xs:complexType name="ParticipantIdentifierType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="DocumentIdentifierType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ProcessIdentifierType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="scheme" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="ExtensionType">
<xs:annotation>
<xs:documentation>
A single extension for private use.
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionID" type="xs:token">
<xs:annotation>
<xs:documentation>
An identifier for the Extension assigned by the creator of the extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionName" type="xs:string">
<xs:annotation>
<xs:documentation>
A name for the Extension assigned by the creator of the extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionAgencyID" type="xs:string">
<xs:annotation>
<xs:documentation>
An agency that maintains one or more Extensions.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionAgencyName" type="xs:string">
<xs:annotation>
<xs:documentation>
The name of the agency that maintains the Extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionAgencyURI" type="xs:anyURI">
<xs:annotation>
<xs:documentation>
A URI for the Agency that maintains the Extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionVersionID" type="xs:normalizedString">
<xs:annotation>
<xs:documentation>
The version of the Extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionURI" type="xs:anyURI">
<xs:annotation>
<xs:documentation>
A URI for the Extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionReasonCode" type="xs:token">
<xs:annotation>
<xs:documentation>
A code for reason the Extension is being included.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element maxOccurs="1" minOccurs="0" name="ExtensionReason" type="xs:string">
<xs:annotation>
<xs:documentation>
A description of the reason for the Extension.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:any namespace="##other" processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
On Twitter: Follow @philiphelger
Donation link: https://paypal.me/PhilipHelger
It is appreciated if you star the GitHub project if you like it.
- Home
- News and noteworthy
- Migrations
- Download
- Features
- Configuration
- Running
- Source related
- Other information
- Future plans
- License
- Release Tasks