- From: Richard Tobin <richard@inf.ed.ac.uk>
- Date: Fri, 30 Nov 2007 18:40:47 +0000 (GMT)
- To: public-xml-processing-model-wg@w3.org
The pipeline below computes Ackermann's function. For example,
given the input file
<a><m>3</m><n>1</n></a>
it produces the output
<x>13</x>
Given the input
<a><m>3</m><n>2</n></a>
it should produce
<x>29</x>
but with my implementation produces "fork: Resource temporarily unavailable".
<p:pipeline name="ackermann" xmlns:p="http://www.w3.org/ns/xproc">
<p:input port="in"/>
<p:output port="out"/>
<p:xslt name="transform">
<p:input port="stylesheet">
<p:inline>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a[.//a]" priority="10">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="a[m=0]">
<x>
<xsl:value-of select="n + 1"/>
</x>
</xsl:template>
<xsl:template match="a[m>0 and n=0]">
<a>
<m><xsl:value-of select="m - 1"/></m>
<n>1</n>
</a>
</xsl:template>
<xsl:template match="a[m>0 and n>0]">
<a>
<m><xsl:value-of select="m - 1"/></m>
<n>
<a>
<m><xsl:value-of select="m"/></m>
<n><xsl:value-of select="n - 1"/></n>
</a>
</n>
</a>
</xsl:template>
</xsl:stylesheet>
</p:inline>
</p:input>
</p:xslt>
<p:choose name="choose">
<p:when test="//a" name="when">
<ackermann name="rec-ack"/>
</p:when>
<p:otherwise name="otherwise">
<p:identity name="identity"/>
</p:otherwise>
</p:choose>
</p:pipeline>
-- Richard
Received on Friday, 30 November 2007 18:40:28 UTC