- From: Norman Walsh <ndw@nwalsh.com>
- Date: Sun, 14 Dec 2008 21:39:50 -0500
- To: XProc Dev <xproc-dev@w3.org>
- Message-ID: <m21vwajh55.fsf@nwalsh.com>
Jeni Tennison <jeni@jenitennison.com> writes:
>     <p:with-option name="replace"
>       select="concat('"',
>                      replace($product-name, '"', '""'),
>                      '"')" />
Ooh! Bonus points to Jeni for handling the case where the replacement text
contains a double quote! :-)
> Maybe there'd be a use for a p:set-value step. I don't know.
You can certainly write your own. And I'm happy to add it to exproc.org if
there's interest.
Here's set-value.xpl:
<p:declare-step type="ex:set-value"
		xmlns:c="http://www.w3.org/ns/xproc-step"
		xmlns:ex="http://example.com/ns/xproc-example"
		xmlns:p="http://www.w3.org/ns/xproc"
		exclude-inline-prefixes="c ex p">
<p:output port="result"/>
<p:option name="value" required="true"/>
<p:string-replace match="c:result/text()">
  <p:input port="source">
    <p:inline><c:result>text</c:result></p:inline>
  </p:input>
  <p:with-option name="replace"
    select="concat('"',
                   replace($value, '"', '""'),
                   '"')">
    <p:empty/>
  </p:with-option>
</p:string-replace>
</p:declare-step>
and here's an example of how to use it:
<p:pipeline name="pipeline"
 	    xmlns:ex="http://example.com/ns/xproc-example"
	    xmlns:p="http://www.w3.org/ns/xproc">
<p:import href="set-value.xpl"/>
<p:variable name="some-string" select="'my "value'"/>
<ex:set-value>
  <p:with-option name="value" select="$some-string"/>
</ex:set-value>
</p:pipeline>
                                        Be seeing you,
                                          norm
-- 
Norman Walsh <ndw@nwalsh.com> | They that can give up essential liberty
http://nwalsh.com/            | to obtain a little temporary safety
                              | deserve neither liberty nor
                              | safety.--Benjamin Franklin
Received on Monday, 15 December 2008 02:40:30 UTC