|
Subject: [xsl] Re: How to make a xsl:function that returns the function() From: Toshihiko Makita <tmakita@xxxxxxxxxxxxx> Date: Sun, 20 Jan 2013 01:43:34 +0900 |
In my previous post there is redundant code fragments. Following is the right one:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ahf="http://www.yahoo.co.jp/tmakita">
<xsl:template match="root">
<xsl:variable name="selectFunc" as="function(*)" select="ahf:funcGetChildElementByName('d')"/>
<xsl:copy>
<xsl:sequence select="$selectFunc(.)"/>
</xsl:copy>
</xsl:template>
<xsl:function name="ahf:funcGetChildElementByName" as="function(element()) as element()*">
<xsl:param name="prmElemName" as="xs:string"/>
<xsl:sequence select="let $en := $prmElemName,
$f := function($a as element(),$elemName as xs:string) as element()* {$a/child::*[starts-with(name(),$elemName)]}
return $f(?,$en)"/>
</xsl:function>
</xsl:stylesheet>
Toshihiko Makita
(2013/01/20 0:16), Toshihiko Makita wrote:
> Hi List,
>
> I'm very interested in XSLT 3.0 and have a question about the function
> that returns the function as its return value.
> Is it possible to make a such xsl:function?
> I tested using the following code in oXygen 14.1 with Saxon 9.4.0.4.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="3.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> xmlns:ahf="http://www.yahoo.co.jp/tmakita">
>
> <xsl:template match="root">
> <xsl:variable name="slectFunc" as="function(*)"
> select="ahf:funcGetChildElementByName('d')"/>
> <xsl:copy>
> <xsl:sequence select="$slectFunc(.)"/>
> </xsl:copy>
> </xsl:template>
>
> <xsl:function name="ahf:funcGetChildElementByName" as="function(*)">
> <xsl:param name="prmElemName" as="xs:string"/>
> <xsl:sequence select="function($a as element()) as element()*
> {$a/child::*[starts-with(name(),$prmElemName)]}"/>
> </xsl:function>
>
> </xsl:stylesheet>
>
> However Saxon returns following error.
>
> System ID: D:\My Documents\Proj\XSLT-TEST\20130113-func\test.xsl
> Main validation file: D:\My Documents\Proj\XSLT-TEST\20130113-func\test.xsl
> Engine name: Saxon-EE 9.4.0.4
> Severity: error
> Description: 0
>
> Is there any workarounds?
>
> Regards,
>
> Toshihiko Makita
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Re: How to make a xsl:functio, Toshihiko Makita | Thread | [xsl] node kind of result tree, Max Toro |
| [xsl] Re: How to make a xsl:functio, Toshihiko Makita | Date | [xsl] node kind of result tree, Max Toro |
| Month |