Re: [xsl] Reusing and XPath expression

Subject: Re: [xsl] Reusing and XPath expression
From: Jacobus Reyneke <jacobusreyneke@xxxxxxxxx>
Date: Thu, 3 Mar 2011 14:25:28 +0200
Thank you, gents.

On Thu, Mar 3, 2011 at 2:06 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
>
> You seem to be looking for functions:
>
> <xsl:function name="f:depth" as="xs:integer">
> <xsl:param name="node" as="node()"/>
> <xsl:sequence select="count($node/ancestor::*)"/>
> </xsl:function>
>
> Michael Kay
> Saxonica
>
> On 03/03/2011 11:56, Jacobus Reyneke wrote:
>>
>> Good day,
>>
>> Is there some way to re-use just part of an XPath expression. Here I
>> made an attempt by assigning it to a variable, but the benefit of
>> doing it this way is very limited:
>>
>>     <xsl:template match="cv:*/gl:title">
>>         <xsl:variable name="ancestors" select="count(ancestor::*)"/>
>>         <fo:block>
>>             <fo:inline font-size="{($title-font-size)-2*$ancestors}pt">
>>                 <xsl:apply-templates></xsl:apply-templates>
>>             </fo:inline>
>>         </fo:block>
>>     </xsl:template>
>>
>> In this example I resize the section titles in FO depending on the
>> depth of the title. Is there some way I can put the
>> "count(ancestor::*)" expression in one place and so re-use it in
>> different templates by 'calling' it? I cannot just make the expression
>> 'global' because new values cannot be assigned to it.
>>
>> This is just a question in an attempt to understand the mechanism of
>> re-using bits of XPath in an attempt to keep templates maintainable.
>>
>> Kind regards,
>> Jacobus

Current Thread