- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Thu, 18 Sep 2008 21:53:08 +0100
- To: Norman Walsh <ndw@nwalsh.com>
- Cc: public-xml-processing-model-wg@w3.org
Norm, On 18 Sep 2008, at 20:26, Norman Walsh wrote: > What's the easiest way to write a step that compares two documents and > returns one of them if they're the same? If they're different, it > throws an error Sorry, I see what you want to do from the subject. I guess that the problem with: <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" name="pipe"> <p:input port="source"> <p:inline><doc>A</doc></p:inline> </p:input> <p:input port="alternate"> <p:inline><doc>A</doc></p:inline> </p:input> <p:output port="result"/> <p:compare name="comparison" fail-if-not-equal="true"> <p:input port="source"> <p:pipe step="pipe" port="source" /> </p:input> <p:input port="alternate"> <p:pipe step="pipe" port="alternate" /> </p:input> </p:compare> <p:identity> <p:input port="source"> <p:pipe step="pipe" port="source" /> </p:input> </p:identity> </p:declare-step> is that there's no guarantee that the <p:identity> step will be done before the <p:compare> step. It works in Calabash (for some definition of 'works'; the error that's given when the documents aren't the same isn't particularly helpful). So you probably need to do: <p:choose> <p:when test=". = 'true'"> <p:xpath-context> <p:pipe step="comparison" port="result" /> </p:xpath-context> <p:identity> <p:input port="source"> <p:pipe step="pipe" port="source" /> </p:input> </p:identity> </p:when> <p:otherwise> <p:identity> <p:input port="source"> <p:pipe step="comparison" port="result" /> </p:input> </p:identity> </p:otherwise> </p:choose> (By the way, Calabash errored when I had the <p:xpath-context> in the <p:choose> instead of the <p:when>, which it shouldn't have done.) Jeni -- Jeni Tennison http://www.jenitennison.com
Received on Thursday, 18 September 2008 20:53:47 UTC