RE: struggle with ports on step compare

Another XProc 'gotcha'. The p:compare step has no primary output port
(in contrast to p:identity). Because you don't provide a binding for the
p:with-option element, the XProc processor tries to manufacture one for
you based on the default readable port. In the example with p:identity,
the default readable port will be the primary output port of p:identity.
In the pipeline with p:compare, the default readable port is undefined,
because p:compare has no primary output port, and therefore you get the
static error.
 
Regards,
Vojtech



________________________________

	From: xproc-dev-request@w3.org [mailto:xproc-dev-request@w3.org]
On Behalf Of Paul Hermans
	Sent: Thursday, July 02, 2009 1:29 PM
	To: xproc-dev@w3.org
	Subject: struggle with ports on step compare
	
	
	XProc processor used calabash-0.9.11
	
	
	a) having a working pipeline: showing the relevant snippet,
writing some xml to the file system.
	
	
	  <p:identity name="compare">
	            <p:input port="source">
	                <p:inline>
	                    <test/>
	                </p:inline>
	            </p:input>
	   </p:identity>
	   <p:store name="write2file">
	             <p:input port="source">
	                 <p:pipe port="result" step="compare"/>
	             </p:input>
	             <p:with-option name="href"
select="concat('/Users/paul/Desktop/R&amp;D/xmlschema/',$xml,'.err')"/>
	   </p:store>
	
	
	b) pipeline throwing following error if the identity step is
replaced by a compare step.
	
	
	
	Error  :
file:/Users/paul/Desktop/R&D/xmlschema/iterateconfig.xpl:122: option
href unbound on p:store step named write2file and no default readable
port.
	Error  : Pipeline failed: err:XS0032: option href unbound on
p:store step named write2file and no default readable port.  It is a
static error if no binding is provided and the default readable port is
undefined.
	Process ended with exit code: 0
	
	
	
	<p:compare name="compare">
	            <p:input port="source">
	                <p:pipe port="result" step="tryxsd"/>
	            </p:input>
	            <p:input port="alternate">
	                <p:pipe port="result" step="trysch"/>
	            </p:input>
	            <p:with-option name="fail-if-not-equal"
select="'false'"/>
	 </p:compare>
	
	 <p:store name="write2file">
	             <p:input port="source">
	                 <p:pipe port="result" step="compare"/>
	             </p:input>
	             <p:with-option name="href"
select="concat('/Users/paul/Desktop/R&amp;D/xmlschema/',$xml,'.err')"/>
	 </p:store>
	
	
	The compare step is, according to me, OK, since when using it as
a last step in the pipeline, the expected value appears on the console.
	I know that the result port on compare is not primary, hence the
explicit binding effort.
	
	
	What am I missing?
	
	
	 
	

	

	
	
	
	
	
	Kind Regards,
	Paul
	
	

Received on Thursday, 2 July 2009 11:36:04 UTC