Re: Naming ports vs. naming documents

Hi Richard,

I don't quite follow what you mean here:

Richard Tobin wrote:
>> In a stylesheet, we would like to be able to write: <xsl:import
>> href="someURI"/>, where someURI is a reference to output of a step in
>> the pipeline. Instead of assigning the URI to the output, as in
>> <p:output name="..." produces="someURI"/>, I think it is better to
>> make the connection explicit between the step that produces the
>> document and the one that consumes the document (see [1] for a
>> discussion on this topic), as in:
>>
>>     <p:step name="...">
>>         <p:output label="step-1-output"/>
>>     </p:step>
>>
>>     <p:step name="xslt">
>>         <p:define-uri uri="someURI" ref="step-1-output"/>
>>     </p:step>
> 
> First, I think it would be a mistake to use
> 
>   <xsl:import href="http://some.server/some/path"/>
> 
> and have the http: URI refer to completely unrelated things depending
> on which pipeline it's run in (and they have to be unrelated, so that
> multiple instances of the pipeline can run).  
> 
> What we have here is just a conventional temporary file, and I don't
> see why we can't use conventional temporary file mechanisms for
> handling it.  The conventional way to do it is to have an
> automatically generated filename which is shared by storing it in a
> variable.  This removes the issue of what URI scheme to use, and can
> for example be implemented as a file: URI.
> 
> This leaves us with two problems: how to share the name, and how to
> synchronise the components (since the access to the temporary file need
> not be mediated by the pipeline engine, the second component probably
> can't start reading it until the first has finished writing it).
> 
> The name can be passed in to the second component by whatever
> mechanism we use for passing parameters, providing we have some
> sort of variables in the pipeline.
> 
> And the synchronisation could be automated if the pipeline compiler
> recognised that on of the second component's parameters used the
> variable that stored the temporary file name.

The scenario, as I understand it is that we have an XSLT step that uses 
stylesheet A, which imports stylesheet B, where stylesheet B is an 
output from a previous step in the pipeline.

I think that you're suggesting that the URI for stylesheet B is stored 
in a pipeline variable, and passed into the XSLT step as a pipeline 
parameter. Then, presumably, stylesheet A needs to have some notation 
for referencing that (pipeline) parameter, so the <xsl:import> would 
look something like:

   <xsl:import href="!STYLESHEET_B_FILENAME!" />

The problem with this is that stylesheet A then cannot be used outside a 
pipeline.

Or perhaps you're suggesting that stylesheet A be generated by another 
step that takes the URI for stylesheet B as an input or an XSLT 
parameter. The pipeline would look something like:

                               (some step)
                                    |
                                    v
                               stylesheet B
                                    |
                                 (store)
                                    |
                                    v
                             stylesheet B URI
                                    |
                       doc        (xslt) <- generate_stylesheet_A.xsl
                        |           |
                        v           v
                      (xslt) <- stylesheet A
                        |
                        v
                      result

which seems quite laborious.

I feel I must have misunderstood your suggestion. Could you clarify?

Thanks,

Jeni
-- 
Jeni Tennison
http://www.jenitennison.com

Received on Friday, 5 May 2006 10:01:20 UTC