0

I have the following key but get an apache error when I try to run the code.

<xsl:key name="dt" match="//eprint[substring(date,1,4) &gt;= $year]" use="substring(date,1,4)" />

The error I get is:

[Thu Jul 12 10:51:18.724468 2018] [php7:warn] [pid 24089] [client 127.0.0.1:34808] PHP Warning:  XSLTProcessor::importStylesheet(): Forbidden variable in /home/david/Documents/staffpub/inc/staff.php on line 54, referer: http://localhost:81/test_jsonp.html
[Thu Jul 12 10:51:18.724614 2018] [php7:warn] [pid 24089] [client 127.0.0.1:34808] PHP Warning:  XSLTProcessor::importStylesheet(): compilation error: file /home/david/Documents/staffpub/inc/sorts/year.xsl line 5 element key in /home/david/Documents/staffpub/inc/staff.php on line 54, referer: http://localhost:81/test_jsonp.html
[Thu Jul 12 10:51:18.724634 2018] [php7:warn] [pid 24089] [client 127.0.0.1:34808] PHP Warning:  XSLTProcessor::importStylesheet(): xsl:key : 'match' pattern compilation failed '//eprint[substring(date,1,4) &gt;= $year]' in /home/david/Documents/staffpub/inc/staff.php on line 54, referer: http://localhost:81/test_jsonp.html
[Thu Jul 12 10:51:18.732938 2018] [php7:warn] [pid 24089] [client 127.0.0.1:34808] PHP Warning:  XSLTProcessor::transformToXml(): No stylesheet associated to this object in /home/david/Documents/staffpub/inc/staff.php on line 59, referer: http://localhost:81/test_jsonp.html

I guess there is something wrong with the key set up, but I am unsure what.

Is anyone able to point me in the right direction?

A sample data set is

<?xml version='1.0' encoding='utf-8'?>
<eprints xmlns='http://eprints.org/ep2/data/2.0'>
  <eprint id='http://dsfdsfs'>
   <eprintid>3424243242423</eprintid>
   <date>2012-12</date>
  </eprint>
davidjh
  • 387
  • 1
  • 7
  • 13
  • What XSLT processor are you using? If it is one that only supports XSLT 1.0 then it is an error to use a variable reference in the "match" (or "use") attribute in xsl:key. – Tim C Jul 12 '18 at 10:08
  • How do I find out what process I am using? I didnt write this code, trying to resolve an issue with it :( I am using libxslt Version 1.1.29 if that helps? – davidjh Jul 12 '18 at 10:09
  • libxslt is the XSLT processor.....(Although for future reference, see https://stackoverflow.com/questions/25244370/how-can-i-check-which-xslt-processor-is-being-used-in-solr). But in anycase, I believe libxslt only supports XSLT 1.0. – Tim C Jul 12 '18 at 10:13
  • Hi, thanks. So I changes the key to be a value rather than a variable and it works. Is it not possible to pass a variable into a key? – davidjh Jul 12 '18 at 10:25
  • Not in XSLT 1.0. You will have to change to use an XSLT 2.0 (or better still XSLT 3.0) processor, like Saxon. – Tim C Jul 12 '18 at 10:30

0 Answers0