apply-gen now properly handles multiple functions
parent
dd6c8a8040
commit
1cc2423662
|
@ -120,15 +120,10 @@
|
||||||
select="namespace-uri-for-prefix(
|
select="namespace-uri-for-prefix(
|
||||||
$ns-prefix, . )" />
|
$ns-prefix, . )" />
|
||||||
|
|
||||||
<!-- this ensures that the prefix used is actually defined within
|
|
||||||
our result document and resolves to the proper namespace -->
|
|
||||||
<namespace name="{$ns-prefix}"
|
|
||||||
select="$ns" />
|
|
||||||
|
|
||||||
<sequence select="fgen:create-func(
|
<sequence select="fgen:create-func(
|
||||||
$name-resolv, $local-name, $ns )" />
|
$name-resolv, $local-name, $ns-prefix, $ns )" />
|
||||||
<sequence select="fgen:create-tpl(
|
<sequence select="fgen:create-tpl(
|
||||||
$name-resolv, . )" />
|
$name-resolv, ., $ns-prefix, $ns )" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
@ -154,9 +149,13 @@
|
||||||
<function name="fgen:create-func">
|
<function name="fgen:create-func">
|
||||||
<param name="name-resolv" as="xs:QName" />
|
<param name="name-resolv" as="xs:QName" />
|
||||||
<param name="local-name" as="xs:string" />
|
<param name="local-name" as="xs:string" />
|
||||||
|
<param name="ns-prefix" as="xs:string" />
|
||||||
<param name="ns" as="xs:anyURI" />
|
<param name="ns" as="xs:anyURI" />
|
||||||
|
|
||||||
<out:function name="{$name-resolv}" as="element()">
|
<out:function name="{$name-resolv}" as="element()">
|
||||||
|
<namespace name="{$ns-prefix}"
|
||||||
|
select="$ns" />
|
||||||
|
|
||||||
<element name="{$local-name}"
|
<element name="{$local-name}"
|
||||||
namespace="{$ns}" />
|
namespace="{$ns}" />
|
||||||
</out:function>
|
</out:function>
|
||||||
|
@ -174,12 +173,17 @@
|
||||||
<function name="fgen:create-tpl">
|
<function name="fgen:create-tpl">
|
||||||
<param name="name-resolv" as="xs:QName" />
|
<param name="name-resolv" as="xs:QName" />
|
||||||
<param name="defn" as="element(xsl:function)" />
|
<param name="defn" as="element(xsl:function)" />
|
||||||
|
<param name="ns-prefix" as="xs:string" />
|
||||||
|
<param name="ns" as="xs:anyURI" />
|
||||||
|
|
||||||
<variable name="params"
|
<variable name="params"
|
||||||
select="$defn/xsl:param" />
|
select="$defn/xsl:param" />
|
||||||
|
|
||||||
<out:template mode="f:apply"
|
<out:template mode="f:apply"
|
||||||
match="{$name-resolv}">
|
match="{$name-resolv}">
|
||||||
|
<namespace name="{$ns-prefix}"
|
||||||
|
select="$ns" />
|
||||||
|
|
||||||
<for-each select="$params">
|
<for-each select="$params">
|
||||||
<xsl:variable name="i"
|
<xsl:variable name="i"
|
||||||
select="position()" />
|
select="position()" />
|
||||||
|
|
|
@ -32,5 +32,13 @@
|
||||||
|
|
||||||
<sequence select="$x + $y" />
|
<sequence select="$x + $y" />
|
||||||
</function>
|
</function>
|
||||||
</stylesheet>
|
|
||||||
|
|
||||||
|
|
||||||
|
<!-- make sure multiple functions are properly handled -->
|
||||||
|
<function name="foo:sub-two" as="xs:decimal">
|
||||||
|
<param name="x" as="xs:decimal" />
|
||||||
|
<param name="y" as="xs:decimal" />
|
||||||
|
|
||||||
|
<sequence select="$x - $y" />
|
||||||
|
</function>
|
||||||
|
</stylesheet>
|
||||||
|
|
|
@ -48,5 +48,17 @@
|
||||||
<with-param name="arg2" select="$y" />
|
<with-param name="arg2" select="$y" />
|
||||||
</apply-templates>
|
</apply-templates>
|
||||||
</function>
|
</function>
|
||||||
|
|
||||||
|
|
||||||
|
<function name="foo:apply-sub-two">
|
||||||
|
<param name="x" as="xs:decimal" />
|
||||||
|
<param name="y" as="xs:decimal" />
|
||||||
|
|
||||||
|
<apply-templates select="foo:sub-two()"
|
||||||
|
mode="f:apply">
|
||||||
|
<with-param name="arg1" select="$x" />
|
||||||
|
<with-param name="arg2" select="$y" />
|
||||||
|
</apply-templates>
|
||||||
|
</function>
|
||||||
</stylesheet>
|
</stylesheet>
|
||||||
|
|
||||||
|
|
|
@ -165,5 +165,17 @@
|
||||||
|
|
||||||
<expect label="applying template to nullary yields proper result"
|
<expect label="applying template to nullary yields proper result"
|
||||||
test="$x:result = 5" />
|
test="$x:result = 5" />
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ensure that multiple functions are processed -->
|
||||||
|
<scenario label="with multiple functions">
|
||||||
|
<call function="foo:apply-sub-two">
|
||||||
|
<param name="x" select="2" />
|
||||||
|
<param name="y" select="3" />
|
||||||
|
</call>
|
||||||
|
|
||||||
|
<expect label="applying template to nullary yields proper result"
|
||||||
|
test="$x:result = -1" />
|
||||||
|
</scenario>
|
||||||
</scenario>
|
</scenario>
|
||||||
</description>
|
</description>
|
||||||
|
|
Loading…
Reference in New Issue