Re: own defined step and xml:base "inheritance"

Hi Jostein,

Thanks for your answer.

I tried both of your solutions but unfortunately the value of base-uri() is
always the *base-uri of the xml file being processed* and not what I wrote
in the xml:base attribute :-(

On the other hand my goal is actually to make the pipeline as simple and as
short as possible : I would really like to use it <igs:xslt href="...">
exactly like <p:document href="..."/> which automaticaly resolve the uri
according to the xml:base without I need to tell it.

This is important because the first xpl file will be used as a kind of
"profile file" for non xproc developpers, it really has to keep less
verbose as possible.

Anyway you are right about xml:base, this is not "inheritance" (I wrote it
with quotes on this purpose), it's rather "implementation of xml:base with
declared steps".

Thanks for your help.

Cheers

Matthieu

PS : INFO
XML Calabash version 1.0.3 (for Saxon 9.4.x), an XProc processor.
Running on Saxon version 9.4.0.2, HE edition.
I'm not able to run my pipeline with Calabash1.0.16 because of another
problem I will explain in another post.







2013/12/16 Jostein Austvik Jacobsen <josteinaj@gmail.com>

> You could resolve the URI each time you invoke your step:
>
> <p:import href="common.xpl"/>
>  <p:pipeline type="igs:xml2ecf" xml:base="file:///C:/foo/bar/">
>     <igs:xslt>
>         <p:with-option name="href"
> select="resolve-uri('xsl/igs/v2.5/main_igs_v2.5.xsl', base-uri(.))"/>
>     </igs:xslt>
> </p:pipeline>
>
> Alternatively, you could add a base-uri option to your step:
>
> <p:import href="common.xpl"/>
> <p:pipeline type="igs:xml2ecf" xml:base="file:///C:/foo/bar/">
>     <igs:xslt href="xsl/igs/v2.5/main_igs_v2.5.xsl">
>         <p:with-option name="base-uri" select="base-uri(.)"/>
>     </igs:xslt>
> </p:pipeline>
>
> The base URI of p:with-option in your last example is (almost certainly)
> an absolute file URI pointing to the file you declared igs:xslt in. The
> xml:base is not "inherited" in any way, and there's no "tunneling"
> mechanism that could be used like there is in XSLT (although I wish there
> were).
>
> Hope this helps.
>
>
> Jostein
>
>
> On 16 December 2013 09:50, RICAUD-DUSSARGET Matthieu <
> matthieu.ricaud@igs-cp.fr> wrote:
>
>> Hi all,
>>
>> I'm using Calabash. I don't know if the problem comes from xproc
>> implementation or just xproc dev.
>>
>> When I use a pipeline with an xml:base attribute, I can use p:xslt with
>> p:document/@href relative to this xml:base :
>>
>>   <p:pipeline type="igs:xml2ecf" xml:base="file:///C:/foo/bar/">
>>       <p:xslt>
>>         <p:input port="stylesheet"><p:document
>> href="xsl/my.xsl"/></p:input>
>>       </p:xslt>
>>   </p:pipeline>
>>
>> As long as file:///C:/foo/bar/xsl/my.xsl exists, it works, perfect !
>>
>> But when I want to override p:xslt with my own step in a library, it
>> doesn't work anymore :
>>
>>   <p:import href="common.xpl"/>
>>   <p:pipeline type="igs:xml2ecf" xml:base="file:///C:/foo/bar/">
>>       <igs:xslt href="xsl/igs/v2.5/main_igs_v2.5.xsl"/>
>>   </p:pipeline>
>>
>> where common.xpl defines :
>>
>> <p:declare-step type="igs:xslt" name="current">
>>     <p:input port="source" sequence="true" primary="true"/>
>>     <p:input port="parameters" kind="parameter"/>
>>     <p:output port="result" primary="true"/>
>>     <p:option name="href" required="true" cx:type="xsd:anyURI"/>
>>     <p:load name="load_stylesheet"><p:with-option name="href"
>> select="$href"/></p:load>
>>     <p:xslt>
>>         <p:input port="stylesheet">
>>             <p:pipe port="result" step="load_stylesheet"/>
>>         </p:input>
>>         <p:input port="source">
>>             <p:pipe port="source" step="current"/>
>>         </p:input>
>>         <p:input port="parameters">
>>             <p:pipe port="parameters" step="current"/>
>>         </p:input>
>>     </p:xslt>
>>     <ut:log>
>>       <p:with-option name="href" select="resolve-uri($debug_fileName,
>> base-uri(.))"/>
>>     </ut:log>
>>   </p:declare-step>
>>
>> I have added cx:type="xsd:anyURI" on href option so it is affect by
>> xml:base but it doesn't work either.
>>
>> I get an error because the xsl file is not available in the same folder
>> as the xpl file.
>>
>> Of course I can add the xml:base on "igs:xslt" p:declare-step and it
>> works. But this step is a common one and the goal is to be able to call it
>> with a different xml:base each time.
>>
>> Do you have any advices or ideas to solve this ?
>>
>> Thanks in advance,
>>
>> Matthieu
>>
>>
>> --
>> Matthieu Ricaud-Dussarget
>> IGS-CP - Développeur XML
>> 05 45 37 09 49
>>
>
>


-- 
Matthieu Ricaud-Dussarget
IGS-CP - Développeur XML
05 45 37 09 49

Received on Monday, 16 December 2013 10:06:48 UTC