xsl-list
[Top] [All Lists]

[xsl] XSLT key() function document argument

2009-11-02 20:17:08
Hi all,

I have a stylesheet that initializes some keys based on content in the input document. Then, the stylesheet applies templates to a node set variable whose contents come from an external file. For awhile I was very confused, because the keys weren't accessible from the templates that were being applied in the different context.

<xsl:key name="c" match="rm:content" use="string(@name)"/>
<xsl:key name="l" match="rm:label" use="string(@name)"/>
<xsl:variable name="orig-context" select="/"/>

...

<xsl:variable name="wf">
    <xsl:copy-of select="document($wf-filepath)"></xsl:copy-of>
</xsl:variable>

<xsl:template match="/rm:contentList">
    <xsl:apply-templates select="$wf"/>
</xsl:template>

<xsl:template match="rm:insert[(_at_)label]">
    <xsl:apply-templates select="key('l', @label, $orig-context)"/>
</xsl:template>

The variable $wf contains the rm:insert elements that are matched by the final template.

Now the question is -- is there a way to reference the "original" context, i.e., the document that processor originally encounters as the input tree? I've stored the document in the variable $orig-context, but this doesn't seem like an efficient or particularly elegant solution. Is there some special syntax to access the original context from a context created when applying templates to a node set variable?

Many thanks,

--Bill

--~------------------------------------------------------------------
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>
--~--

<Prev in Thread] Current Thread [Next in Thread>