This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Checking node position
- To: "'xsl-list at mulberrytech dot com'" <xsl-list at mulberrytech dot com>
- Subject: RE: Checking node position
- From: "Pawson, David" <DPawson at rnib dot org dot uk>
- Date: Mon, 4 Sep 2000 10:24:16 +0100
- Reply-To: xsl-list at mulberrytech dot com
Gary, Saxon 5.4.1 complains
<xsl:variable name="head-types"
select="document('')//x:keynode/text()"/>
<xsl:template match="p[. = $head-types]">
<xsl:element name="{.}">
<xsl:apply-templates select="key('parent', generate-id())[not(. =
$head-types)]"
mode="inner"/>
</xsl:element>
</xsl:template>
Failed to compile style sheet
At xsl:template on line 18 of trash.xsl: The match pattern in
xsl:template may not contain references to variables
18 is the template match above.
It looks OK to me, am I missing something?
The variable within the predicate I thought was OK?
DaveP
Gary Peskin wrote:
> This approach is a little more table-driven:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:x="foo" exclude-result-prefixes="x">
>
> <x:keynode>head1</x:keynode>
> <x:keynode>head2</x:keynode>
>
> <xsl:key name="parent" match="p"
> use="generate-id(preceding-sibling::p[string(.) =
> document('')//x:keynode/text()])" />
>
> <xsl:variable name="head-types"
> select="document('')//x:keynode/text()"/>
>
> <xsl:template match="p[. = $head-types]">
> <xsl:element name="{.}">
> <xsl:apply-templates select="key('parent', generate-id())[not(. =
> $head-types)]"
> mode="inner"/>
> </xsl:element>
> </xsl:template>
>
> <xsl:template match="p"/>
>
> <xsl:template match="p" mode="inner">
> <sub>
> <xsl:copy-of select="."/>
> </sub>
> </xsl:template>
>
> </xsl:stylesheet>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list