xsl-list
[Top] [All Lists]

Re: [xsl] current() within a key element's @use

2012-12-28 10:38:36
As for a work-around, the following works with xsltproc, but
interestingly, not with Saxon.  Saxon complains "key() function cannot
be used here".  (This is a variant of the XSLT that Dimitre posted on
SO):


    <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
      <xsl:output omit-xml-declaration="yes" indent="yes"/>

      <xsl:key name='kTagUsage' match='tagUsage' use='@render'/>
      <xsl:key name="kRendByUsageGi" match="rendition"
        use="key('kTagUsage', @xml:id)/@gi"/>

      <xsl:template match="/">
        <xsl:copy-of select="key('kRendByUsageGi', 'p')/text()"/>
        ========
        <xsl:copy-of select="key('kRendByUsageGi', 'emph')/text()"/>
      </xsl:template>
    </xsl:stylesheet>



On Fri, Dec 28, 2012 at 10:28 AM, Michael Kay <mike(_at_)saxonica(_dot_)com> 
wrote:


On 24/12/2012 00:24, John P. McCaskey wrote:

I have found inconsistent behavior when using current() in the use attribute 
of a key element.

Shouldn't these
    <xsl:key name="keyUsingCurrent"   match="color" use="current()/@id"/>
    <xsl:key name="keyWithoutCurrent" match="color" use="@id"/>
produce the same set of keys?


Yes, it should. The spec says: "For an outermost expression (an expression 
not occurring within another expression), the current node is always the same 
as the context node.".

The XSLT 1.0 spec is not terribly explicit about what what the current node 
is in other situations, but the examples it gives lead one to infer that it 
should be the same as for the outermost containing expression.


Am I witnessing a bug in code that xsltproc, Chrome and Safari share? If so, 
to whom would I report such a bug? Would doing so make any difference? >

Yes, don't know, and probably not.

Michael Kay
Saxonica


I need current() to work inside @use, so that I can have an attribute such as
use="../tagUsage[@render=current()/@xml:id]/@gi". See 
http://stackoverflow.com/questions/13984167/create-xsl-key-by-joining-elements.
 If this is a bug, is there a workaround?

Thanks for any help.

-- JPM

John P. McCaskey, mailbox(_at_)johnmccaskey(_dot_)com

--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
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(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--