Re: option scope question

James Sulak <jsulak@gmail.com> writes:
> Is this a bug, or am I missing something?
>
> <p:declare-step xmlns:p="http://www.w3.org/ns/xproc">
>
>   <p:output port="result" primary="true"/>
>
>   <p:option name="foo" select="'data'"/>
>
>   <p:identity>
>     <p:input port="source">
>       <p:inline>
>         <root>This is some text.</root>
>       </p:inline>
>     </p:input>
>   </p:identity>
>
>   <p:string-replace match="root//text()" replace="replace(., 'text', $foo)"/>

The way you've written it, you're asking the p:string-replace step to
evaluate the string-replace. That won't work because the variables aren't
in-scope inside the step. You want this:

  <p:string-replace match="root//text()"
    <p:with-option name="replace"
                   select="concat('replace(., &quot;text&quot;, '", $foo, "')")/>

Now the XProc processor expands teh value of $foo and passes it to
string-replace.

A bit ugly, but...

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | The first step towards wisdom is
http://nwalsh.com/            | calling things by their right
                              | names.--Chinese Proverb

Received on Monday, 29 June 2009 12:27:20 UTC