RE: [xsl] XSLT key() - Saxon UnsupportedOperationException

Subject: RE: [xsl] XSLT key() - Saxon UnsupportedOperationException
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Fri, 17 Jan 2003 19:04:23 -0000
This is a known bug in Saxon 6.5.2: see
http://sourceforge.net/tracker/index.php?func=detail&aid=601804&group_id
=29872&atid=397617

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx 

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Philippe Drix
> Sent: 17 January 2003 14:44
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] XSLT key() - Saxon UnsupportedOperationException
> 
> 
> Hi,
> I have a problem with evaluation of key() fonction.
> 
> I think my problem is a XSLT problem, not a Saxon bug, but 
> here the exception :
> 
> 
> 
> java.lang.UnsupportedOperationException: Cannot create 
> intensional node-set 
> with context dependencies:
> class com.icl.saxon.expr.PathExpression:128
>          at 
> com.icl.saxon.expr.NodeSetIntent.<init>(NodeSetIntent.java:26)
>          at 
> com.icl.saxon.expr.PathExpression.reduce(PathExpression.java:186)
>          at 
> com.icl.saxon.expr.PathExpression.enumerate(PathExpression.java:219)
>          at 
> com.icl.saxon.expr.NodeListExpression.enumerate(NodeListExpres
> sion.java:80)
>          at com.icl.saxon.style.XSLForEach.process(XSLForEach.java:69)
>          at 
> com.icl.saxon.style.StyleElement.processChildren(StyleElement.
> java:630)
>          at com.icl.saxon.style.XSLForEach.process(XSLForEach.java:96)
>          at 
> com.icl.saxon.style.StyleElement.processChildren(StyleElement.
> java:630)
>          at 
> com.icl.saxon.style.LiteralResultElement.process(LiteralResult
> Element.java:281)
>          at 
> com.icl.saxon.style.StyleElement.processChildren(StyleElement.
> java:630)
>          at 
> com.icl.saxon.style.XSLGeneralVariable.getSelectValue(XSLGener
> alVariable.java:235)
>          at 
> com.icl.saxon.style.XSLVariable.process(XSLVariable.java:89)
>          at 
> com.icl.saxon.style.XSLStyleSheet.process(XSLStyleSheet.java:626)
>          at 
> com.icl.saxon.Controller.transformDocument(Controller.java:1065)
>          at com.icl.saxon.Controller.transform(Controller.java:939)
>          at com.icl.saxon.StyleSheet.processFile(StyleSheet.java:516)
>          at com.icl.saxon.StyleSheet.doMain(StyleSheet.java:338)
>          at 
> com.icl.saxon.StyleSheet.main(StyleSheet.java:63)
> 
> 
> 
> The XSLT program is below. I have two XML documents, and a key to 
> construct, matching elements coming from these two documents.
> 
> 
> <xsl:variable name="styles" select="document( $stylesPathName )"/>
> 
> <xsl:key name="groupesdeFieldsParNom"
>           
> match="$styles/office:document-styles/office:master-styles/sty
> le:master-page//text:bookmark-ref/@text:ref-name" 
> 
>           use="." />
> 
> <xsl:key name="groupesdeFieldsParNom"
>           
> match="/office:document-content/office:body//text:bookmark-ref
> /@text:ref-name" 
> 
>           use="." />
> 
> 
> <xsl:variable name="theFields">
>      <fields>
>          <xsl:for-each select="
>              
> /office:document-content/office:body//text:bookmark-ref/@text:
ref-name[
>                generate-id() =
>                generate-id(
>                   key('groupesdeFieldsParNom', .)[1]
>                )
>              ]">
>              <xsl:copy-of select="parent::*"/>
>          </xsl:for-each>
> 
>          <xsl:for-each select="
>              
> $styles/office:document-styles/office:master-styles/style:mast
> er-page//text:bookmark-ref/@text:ref-name[
>                generate-id() =
>                generate-id(
>                   key('groupesdeFieldsParNom', .)[1]
>                )
>              ]">
>              <xsl:copy-of select="parent::*"/>
>          </xsl:for-each>
>      </fields>
> </xsl:variable>
> 
> 
> I think the problem arises on a call to key(), because the 
> context node is 
> not already known, while key() needs this context node, to 
> know what XML 
> tree is to be visited.
> 
> I tried some workarounds, without success. I guess I will 
> have to find out 
> another resolution method, but perhaps there is indeed a 
> workaround that I 
> have not already thought about.
> 
> Any idea ?
> 
> Regards -- Ph D
> 
> 
> 
> 
> ==
> Philippe Drix
>       ___________
> __| OBJECTIVA |___________________
> http://www.objectiva.fr
> 21-23, rue Aristide Briand - 92170 Vanves
> tel : +33 1 47 36 60 30
> fax : +33 1 47 36 61 93
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread