Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In order to workaround the requirement for every object to have its own XSL datastream (inline or redirect), the WSDL binding in the service deployment could hardcode a reference to demo:foo's XSL datastream. Although this does the trick, it's a bit of a hack, and it was 's desirable to be able to describe the datastream binding in a more formal fashion.

...

I came across this issue in the development of the unAPI HTTP service for Fedora. Rather than hardcode a datastream location in the WSDL binding, I extended the DSInputSpec schema to include an optional pid attribute. Absent the pid attribute, the datastream input is still assumed to belong to the data object. However, if the pid is specified, the binding occurs against the specified that pid's datastream.

Gliffy Diagram
sizeL
namemetadata_dissemination_2
page~eddie:Dissemination Architecture Updates
pageid7733419
alignleft
space~eddie

As shown in the diagram above, the data objects no longer include an XSL datastream. Instead, the XSL datastream is located in demo:cmodel and the is referenced in the  DSINPUTSPEC datastream of demo:sdep references demo:cmodel.

Code Block
<fbs:DSInput DSMax="1"DSMin="1"DSOrdinality="false"
             wsdlMsgPartName="XSL"pid="demo:cmodel">
  <fbs:DSInputLabel>XSL</fbs:DSInputLabel>
  <fbs:DSMIME>application/xml</fbs:DSMIME>
  <fbs:DSInputInstruction>DC to MODS XSLT</fbs:DSInputInstruction>
</fbs:DSInput>

Other changes include removing the now-obsolete bDefPID attribute from both the Service Deployment (sDep) Method Map and DSInputSpec schemas.