2.0
Is this XSLT 1.0 or 2.0? (or, dare I ask, 3.0?)
Michael Kay
Saxonica
On 27 Oct 2015, at 16:44, dvint(_at_)dvint(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
I've run into a couple of odd problems trying to use keys and I guess I
have never processed 2 files where one is there to just be used to
lookup
values.
First problem
So one file is the one that drives the processing. I was using this as
the
input to my stylesheet and using the document() function to read the
second one and build my keys. This was failing when I tried this:
<xsl:param name="QAREPORTname" select="_dan1385156030824-qa.dita"/>
<xsl:variable name="QAREPORT" select="document($QAREPORTname, /)"/>
<xsl:key name="TOPIC" match="$QAREPORT/data[@name='WDtopicID']"
use="."/>
or
<xsl:key name="TOPIC" match="document($QAREPORTname,
/)/data[@name='WDtopicID']" use="."/>
or
<xsl:key name="TOPIC" match="document(_dan1385156030824-qa.dita,
/)/data[@name='WDtopicID']" use="."/>
I couldn't find a way to make this work, so my workaround was to feed
the
reference document to the stylesheet and then read in the driver file
and
continue processing. Seems to work but lead to the next problem
Second problem
The key definition seems to get lost when I do the following:
<xsl:template match="/">
<xsl:copy-of select="key('TOPIC', 'dan1370798005424')"/>
<!-- Force processing to continue with the second file -->
<xsl:apply-templates select="$FLATMAP" mode="map"/>
</xsl:template>
<xsl:template match="/" mode="map">
<xsl:apply-templates mode="map"/>
</xsl:template>
<xsl:template match="topicref" mode="map">
<topicref>
<xsl:copy-of select="key('TOPIC', 'dan1370798005424')"/>
</topicref>
</xsl:template>
What I'm seeing is that the copy-of statement in the template matching
'/'
with no mode gives me the correct result. When the same statement is
used
in the match for 'topicref' I get no match or content generated.
Question:
- Can you explain why the key() doesn't work in the template with the
mode
and give me a correction/workaround?
- I'd really like to go back to the more natural processing order and
get
rid of the modes on the templates. Is there some way to get my key
definition to process a file that isn't the input?
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--