[xsl] unction return value not a node?

Subject: [xsl] unction return value not a node?
From: Bartolomeo Nicolotti <bnicolotti@xxxxxxxxx>
Date: Wed, 08 Sep 2010 17:16:05 +0200
Hello,

Sorry but XSLT 2.0 and XPath 2.0 book is more than 1000 pages, so I'm
writing this:

I've this xpath expression that returns a node stored in a variable:

    <xsl:variable name="x" select="($airTraveler/preceding-sibling::ota:AirTraveler[@PassengerTypeCode!='INF' and substring( concat( gal:normNames( ota:PersonName/ota:Surname ), concat( gal:normNames( ota:PersonName/ota:GivenName ),gal:normNames( ota:PersonName/ota:NamePrefix ))),1,16) = $srnNP16 ], $airTraveler)[1]"/>


then if I do

    <xsl:value-of select="$x/preceding-sibling::ota:AirTraveler"/>

I obtain the preceding-sibling nodes.

but if I write this function to use the same xpath expression, quite complicated, in two places

  <xsl:function name="gal:func">
    <xsl:param name="airTraveler"/>
    <xsl:param name="srnNP16"/>
    <xsl:value-of select="($airTraveler/preceding-sibling::ota:AirTraveler[@PassengerTypeCode!='INF' and substring( concat( gal:normNames( ota:PersonName/ota:Surname ), concat( gal:normNames( ota:PersonName/ota:GivenName ),gal:normNames( ota:PersonName/ota:NamePrefix ))),1,16) = $srnNP16 ], $airTraveler)[1]"/>
  </xsl:function>

but when I write:

    <xsl:variable name="x" select="gal:func($airTraveler, $srnNP16 )"/>
    <xsl:value-of select="$x/preceding-sibling::ota:AirTraveler"/>

I don't obtain any preceding sibling.

Could you tell me why?

Many thanks

Bartolomeo

Current Thread