- From: Philip Fennell <Philip.Fennell@marklogic.com>
- Date: Tue, 17 Nov 2009 04:24:02 -0800
- To: XProc Dev <xproc-dev@w3.org>
Whilst writing a number of XProc steps it has occurred to me that an XSLT 2.0 style #current token might be useful when referring to the step your current step. An example:
<p:declare-step name="foo" type="x:foo">
  <p:input port="source" primary="true"/>
  <p:input port="config"/>
  <p:output port="result"/>
  
  <p:wrap match="/*" wrapper="c:body"/>
  <p:add-attribute match="/c:body" attribute-name="content-type" 
      attribute-value="application/xml"/>
  <p:wrap match="/c:body" wrapper="c:request"/>
  <p:add-attribute match="/c:request" attribute-name="method" 
      attribute-value="post"/>
  
  <p:add-attribute match="/c:request" attribute-name="href">
    <p:with-option name="attribute-value" select="/*/@href">
      <p:pipe port="config" step="foo"/>
    </p:with-option>
  </p:add-attribute>
  <p:http-request indent="false" method="xml" encoding="utf-8" 
      media-type="application/xml"/>
</p:declare-step>
In the above example, I obtain the URI for the request from an href attribute that is present on the context step's 'config' port.
I know it's 'small potatoes', but it would be nice if, rather than having to uniquely name the step declaration, you could just use '#current' instead, like this:
<p:add-attribute match="/c:request" attribute-name="href">
  <p:with-option name="attribute-value" select="/*/@href">
    <p:pipe port="config" step="#current"/>
  </p:with-option>
</p:add-attribute>
Now, some might argue to which step I'm referring to as being 'current'; do I mean the p:add-attribute or the x:foo step I'm declaring? The choice of token name and its semantics is up to those that like to debate such issues. I just thought it might be a useful short-hand.
Regards
Philip Fennell
Consultant
Mark Logic Corporation
Received on Tuesday, 17 November 2009 12:24:44 UTC