- From: Florent Georges <fgeorges@fgeorges.org>
- Date: Wed, 31 Jul 2013 17:14:58 +0100
- To: Norman Walsh <ndw@nwalsh.com>
- Cc: XProc Dev <xproc-dev@w3.org>
On 30 July 2013 19:52, Norman Walsh wrote: > Jostein Austvik Jacobsen writes: Hi, >> Has custom non-atomic steps (steps where you can provide one or more >> subpipelines upon invocation) been discussed as a possibility in >> XProc v.Next? It would for instance allow us to define our own >> custom syntactic sugar. > I don't think it's been discussed. It's not clear how to describe a > custom step in a standard way. If we are considering the "macro" approach, if we take the initial example again: <my:if test="..."> <my:xpath-context .../> [ sub-pipeline ] </my:if> being equivalent to: <p:choose> <p:when test="..."> <px:xpath-context .../> [ sub-pipeline ] </p:when> <p:otherwise> <p:identity/> </p:otherwise> </p:choose> What about the following?: <p:declare-macro type="my:if"> <p:input port="source" primary="true"/> <p:output port="result" primary="true"/> <p:xslt> <p:input port="stylesheet"> <p:inline> <xsl:stylesheet version="2.0"> <xsl:template match="/my:if"> <a:choose> <a:when> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </a:when> <a:otherwise> <a:identity/> </a:otherwise> </a:choose> </xsl:template> <xsl:template match="my:xpath-context"> <a:xpath-context> <xsl:copy-of select="node()"/> </a:xpath-context> </xsl:template> <xsl:template match="node()" priority="-1"> <xsl:message terminate="yes"> Unknown: <xsl:copy-of select="."/> </xsl:message> </xsl:template> </xsl:stylesheet> </p:inline> </p:input> <p:input port="parameters"> <p:empty/> </p:input> </p:xslt> </p:declare-macro> This defines a "step like", but which is evaluated at compile- time (instead of at run-time), with the corresponding XML as input (here the my:if element), and the result is inserted in the lexer tree, replacing the initial "macro call". Here the macro is just a stylesheet transforming the my:if into corresponding p:choose (actually in an alias namespace, here bound to "a:"). Regards, -- Florent Georges http://fgeorges.org/ http://h2oconsulting.be/
Received on Wednesday, 31 July 2013 16:15:46 UTC