ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> xsl-list
xsl-list
[xsl] RE: FW: Trying to translate code with specific values into variables to do a count
by Emily Garrett other posts by this author
Nov 4 2006 4:16AM messages near this date
RE: [xsl] REsending: make element required if condition exist | Re: [xsl] Encoding issues with document() function
& XSLT Thanks.  That makes sense.  I tried it but still get the same error.  I changed it to
 this:
 
<xsl:value-of select="count(preceding::*[name()=$counterElement][ends-with(@*[name()=$counte
rAttName],$counterAttValue)][ancestor::*[name()=$containerElement][@*[name()=$containerAttNa
me]=$containerAttValue]])+1"/> 

Here is the error:
XPTY0020: The context item for axis step attribute::attribute() is not a node

Thanks.

Emily


Date: Fri, 3 Nov 2006 22:28:41 -0000
To: <xsl-list@[...].com> 
From: "Michael Kay" <mike@[...].com> 
Subject: RE: [xsl] FW: Trying to translate code with specific values into variables to do a 
count
Message-ID: <016c01c6ff97$6ad0c810$6401a8c0@turtle> 

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/ <http://www.saxonica.com/>  

 

Date: Fri, 3 Nov 2006 15:49:03 -0500
To: <xsl-list@[...].com> 
From: <Emily.Garrett@[...].com> 
Subject: FW: Trying to translate code with specific values into variables to do a count
Message-ID: <3BE0394641D53F46B7D3C6CE870CEC540438C59F@[...].COM> 

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=3D"Ch"> 
<table-wrapper km=3D"Ch.1.Ta.A"> 
.....
</table-wrapper> 
<table-wrapper km=3D"Ch.1.Ta.A"> 
.....
</table-wrapper> 
<table-wrapper km=3D"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=3D"count(preceding::table-wrapper[ends-with(@km,
'Ta.A')][ancestor::chunk[@km=3D'Ch']])+1"/>              =20
This example works perfectly.

But when I try to represent the working code above with variables, I get
an error:
<xsl:value-of
select=3D"count(preceding::*[name()=3D$counterElement[ends-with(@*[name()=
=3D$c
ounterAttName],$counterAttValue)]][ancestor::*[name()=3D$containerElement=
[
@*[name()=3D$containerAttName]=3D$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

------------------------------




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe@[...].com> 
--~--

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved