Subject: RE: FW: Trying to translate code with specific values into variables to do a count
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 3 Nov 2006 22:28:41 -0000
|
You start with
preceding::table-wrapper[ends-with(@km,'Ta.A')]
and you want the element name to be variable. So you replace table-wrapper
with *[name()=$x]. That gives you
preceding::*[name()=$x][ends-with(@km,'Ta.A')]
not
preceding::*[name()=$x[ends-with(@km,'Ta.A')]]
because the ends-with predicate qualifies the element *, not the variable
$x.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Emily.Garrett@xxxxxxxxxxx [mailto:Emily.Garrett@xxxxxxxxxxx]
> Sent: 03 November 2006 20:49
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: FW: Trying to translate code with specific
> values into variables to do a count
>
>
> I am trying to translate code using specific values into code
> that uses variables to represent those values.
>
> Here is an XML example:
> <chunk km="Ch">
> <table-wrapper km="Ch.1.Ta.A">
> .....
> </table-wrapper>
> <table-wrapper km="Ch.1.Ta.A">
> .....
> </table-wrapper>
> <table-wrapper km="Ch.1.Ta.A">
> .....
> </table-wrapper>
> </chunk>
>
> The following code counts all the table-wrapper elements with
> a km attribute that ends in Ta.A that are inside of this
> chunk element where the km attribute value is Ch.
>
> <xsl:value-of select="count(preceding::table-wrapper[ends-with(@km,
> 'Ta.A')][ancestor::chunk[@km='Ch']])+1"/>
> This example works perfectly.
>
> But when I try to represent the working code above with
> variables, I get an error:
> <xsl:value-of
> select="count(preceding::*[name()=$counterElement[ends-with(@*
> [name()=$c
> ounterAttName],$counterAttValue)]][ancestor::*[name()=$contain
> erElement[
> @*[name()=$containerAttName]=$containerAttValue]]])+1"/>
>
> Here is the error:
>
> XPTY0020: The context item for axis step
> attribute::attribute() is not a node
>
> Does anyone have an idea of what I'm doing wrong?
>
> Thanks.
> Emily
|