RE: V.next: resource manager

> How does this work if the mapping isn't known statically? I had in mind
> something like
> 
>   <p:uri-scope>
>     <p:input port="catalog">
>       ...
>     </p:input>
> 
>     ...
>   </p:uri-scope>

Norm, did you mean that you would pass some kind of a catalog document (for example in the c:catalog form that Henry suggested) to the "catalog" input port, or that you would just pass a bunch of XML documents as with any other step? It occurred to me that the latter might work, too - and you wouldn't even need the p:stash step.

The idea is that the p:uri-scope step/wrapper would take all documents passed to it via the "catalog" port, look at their base URIs, and construct a scoped catalog that would map all references to these base URIs in the sub-pipeline to the corresponding documents.

Applying this to your initial example, it might look as this:

<p:delete match="a" name="delete">
  <p:input port="source">
    <p:document href="http://example.com/doc.xml"/>
  </p:input>
</p:delete>
 
<p:uri-scope>
 <p:input port="catalog">
   <p:pipe step="delete" port="result"/>
 </p:input>

 <p:xinclude>
   <p:input port="source">
     <p:inline>
       <book>
         <!-- loads the document from the nearest in-scope catalog -->
         <xi:include href="http://example.com/doc.xml"/>
       </book>
     </p:inline>
   </p:input>
 </p:xinclude>
</p:uri-scope>

The obvious drawback of this solution is that you cannot map from a base URI A to a base URI B easily, but this could be solved easily by combining the above with the p:uri-scope/p:map-uri construct. 

Regards,
Vojtech

--
Vojtech Toman
Consultant Software Engineer
EMC | Information Intelligence Group
vojtech.toman@emc.com
http://developer.emc.com/xmltech

Received on Friday, 6 January 2012 08:32:00 UTC