[ https://issues.apache.org/jira/browse/XALANJ-2799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17936188#comment-17936188 ]
Mukul Gandhi commented on XALANJ-2799: -------------------------------------- [~martin.honnen] I've committed few code changes to XPathParser to help resolve this issue. After these code changes, I'm getting an XSL transform output as follows, <?xml version="1.0" encoding="UTF-8"?><set> <problem> <question>Which lots have red cars?</question> <answer/> </problem> </set> I've think, that above mentioned XSL transform output is correct. The reason is following according to me, For XPath expression key('car-by-color', 'red') / key('lot-for-car', @vin) the key(..) function call after / is not getting any non empty node as context node. Please confirm, whether the fix committed is ok. > java.lang.ClassCastException: org.apache.xpath.objects.XString cannot be cast > to java.lang.String when using XSLT key function on the right side of step > operator / > ------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: XALANJ-2799 > URL: https://issues.apache.org/jira/browse/XALANJ-2799 > Project: XalanJ2 > Issue Type: Bug > Security Level: No security risk; visible to anyone(Ordinary problems in > Xalan projects. Anybody can view the issue.) > Components: transformation, Xalan, Xalan-CmdLine > Affects Versions: The Latest Development Code > Environment: Java 8, Windows 11 > Reporter: Martin Honnen > Priority: Major > Attachments: cars.xml, key-fn-call-in-last-step-test1.xsl > > > Working with the latest XSLT 3.0 branch of Apache Xalan, I get an exception > `java.lang.ClassCastException: org.apache.xpath.objects.XString cannot be > cast to java.lang.String` when trying to use the XSLT `key` function on the > right side of the "path" operator `/` e.g. `key('car-by-color', 'red') / > key('lot-for-car', @vin)`. > I would expect the right side of the / to be evaluated for each node selected > by the expression on the left side of /, without giving any errors. This is > an established XPath 2 and XSLT 2 coding pattern. > The full code > {code:xml} > <?xml version="1.0" encoding="utf-8"?> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="3.0" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > exclude-result-prefixes="xs"> > <xsl:output method="xml" indent="yes"/> > <xsl:key name="car-by-color" match="cars/car" use="@color"/> > > <xsl:key name="lot-for-car" match="lot" use="car/@vin"/> > > <xsl:template match="lot"> > <lot id="{@id}"/> > </xsl:template> > > <xsl:template match="/"> > <set> > <problem> > <question>Which lots have red cars?</question> > <answer> > <xsl:apply-templates select="key('car-by-color', 'red') / > key('lot-for-car', @vin)"/> > </answer> > </problem> > </set> > </xsl:template> > </xsl:stylesheet> > {code} > Sample XML input is e.g. > {code:xml} > <dir> > <cars> > <car vin="101" color="red"/> > <car vin="102" color="green"/> > <car vin="103" color="red"/> > <car vin="104" color="red"/> > </cars> > <lots> > <lot id="L"> > <car vin="101"/> > <car vin="103"/> > </lot> > <lot id="M"> > <car vin="102"/> > </lot> > <lot id="N"> > <car vin="104"/> > </lot> > </lots> > </dir> > {code} > Full error output: > {code} > (Position des Fehlers unbekannt)java.lang.ClassCastException: > org.apache.xpath.objects.XString cannot be cast to java.lang.String > (Position des Fehlers unbekannt)XSLT-Fehler > (javax.xml.transform.TransformerException): Keine Verarbeitungsanweisung f³r > xml-stylesheet gefunden in > ..\..\OneDrive\Documents\xslt\blog-xslt-3-by-example\xalan-xslt3-tests\cars.xml. > Exception in thread "main" java.lang.RuntimeException: Keine > Verarbeitungsanweisung für xml-stylesheet gefunden in > ..\..\OneDrive\Documents\xslt\blog-xslt-3-by-example\xalan-xslt3-tests\cars.xml. > at org.apache.xalan.xslt.Process.doExit(Process.java:1176) > at org.apache.xalan.xslt.Process.main(Process.java:1149) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org For additional commands, e-mail: dev-h...@xalan.apache.org