Search code examples
xproc

Xproc: how to use a variable in an href


I have a variable that holds the name of the stylesheet to apply next.

This does not work:

<p:variable name="filename" select="'/home/stylesheets/indent.xsl'"/>

<p:xslt>
   <p:input port="stylesheet">
       <p:document href="{$filename}"/>
   </p:input>
</p:xslt>

I think I have to do somekind of URI or IRI function on $filename, but I have not been able to figure it out.

UPDATE: I went to the link that grtjn provided and lifted the <p:declare-step type="ut:xslt" name="current"> wrapper.

Now applying the href from variable is very easy:

<ut:xslt>
    <p:with-option name="href" select="$filename" />
</ut:xslt>

Solution

  • IMO it is not possible use variable in href attribute. I solved it using <p:load> step like

    <p:load name="xslt_from_variable">
      <p:with-option name="href" select="$filename" /> 
    </p:load>
    

    In <p:xslt> I bind it to "xslt_from_variable" result port, like

    <p:xslt name="xslt_step">
        <p:input port="source">
            <p:pipe step="xslt_from_variable" port="result" /> 
        </p:input>
        ...
    </p:xslt>
    

    I hope this attempt will work for you as well as for me.