The main CPP structure (defined in XML) has four elements: These are the PartyInfo (information about the organisation), Packaging (), ds:Signature (the digital signature which signs the CPP) and a Comment (general comment) element.
<CollaborationProtocolProfile
... <!-- namespace information -->
>
<PartyInfo> <!-- one or more -->
...
</PartyInfo>
<Packaging id=''ID''> <!-- one or more -->
...
</Packaging>
<ds:Signature> <!-- one or more -->
...
</ds:Signature>
<Comment>comment</Comment> <!-- one or more -->
</CollaborationProtocolProfile>
PartyInfo and Packaging are the more interesting elements and are shown here:
<PartyInfo>
<PartyID type=''...''>
...
</PartyID>
<PartyRef xlink:type=''...'', xlink:href=''...''/>
<CollaborationRole> <!-- one or more -->
...
</CollaborationRole>
<Certificate> <!-- one or more -->
...
</Certificate>
<DeliveryChannel> <!-- one or more -->
...
</DeliveryChannel>
<Transport> <!-- one or more -->
...
</Transport>
<DocExchange> <!-- one or more -->
...
</DocExchange>
</PartyInfo>
<CollaborationRole id=''N11''>
<ProcessSpecification name=''BuySell'' version=''1.0''>
</ProcessSpecification>
<Role name=''buyer'' xlink:href=''...''/>
<CertificateRef certId=''N03''/>
<ServiceBinding name=''some process'' chanelId=''N02'' packageId=''N06''>
<Override action=''OrderAck'' channelId=''N05'' packageId=''N09''
xlink:type=''simple''
xlink:href=''...''/>
</ServiceBinding>
<!-- first alternate binding >
<ServiceBinding chanelId=''N04'' packageId=''N06''>
<Override action=''OrderAck'' channelId=''N05'' packageId=''N09''
xlink:type=''simple''
xlink:href=''...''/>
</ServiceBinding>
</CollaborationRole>
For further details the specifications are useful or the source code of the open source project open ebXML, at www.openebxml.org
<Packaging id=''id''>
<ProcessingCapabilities parse=''...'' generate=''...''/>
<SimplePart id=''id'' mimetype=''type''/>
<CompositeList>
<Composite mimetype=''type'' id=''name''
mimeparameters=''parameter''>
<Constituent idref=''name''/>
</Composite>
<Encapsulation mimetype=''type'' id=''name''
<Constituent idref=''name''/>
</Encapsulation>
</CompositeList>
</Packaging>
The ebXML specifications explain each element in more detail.