Re: [xsl] double document merge using keys

Subject: Re: [xsl] double document merge using keys
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Thu, 24 Jun 2010 16:46:40 +0200
Terry Ofner wrote:

I have a set of standards that need to be aligned with each lesson. The standards are coded to the page, not the lesson. Here is a snippet of the current xml of standardDoc.xml:

<standards>
   <stand startNum="5" endNum="5">19.A.4</stand>
   <stand startNum="11" endNum="11">14.D.2</stand>
   <stand startNum="11" endNum="11">14.D.3</stand>
   <stand startNum="13" endNum="14">14.A.2</stand>
   <stand startNum="15" endNum="15">14.A.1</stand>
   <stand startNum="16" endNum="16">14.A.1</stand>
....
</standards>

The following stylesheet works as far as it goes. It only captures the standards that match the start page of the lesson. What I need is way to address standards with startNum >= $localStart and <= $localEnd. Is there a way to do this using keys?

<xsl:template match="Chapterlesson">
        <xsl:copy>
            <xsl:copy-of select="@*"/>
            <xsl:apply-templates/>
            <xsl:variable name="localStart" select="startNum"/>
            <xsl:variable name="localEnd" select="endNum"/>
            <xsl:for-each select="$stand2page">
                <stand><xsl:copy-of select="key('standPage', $localStart)"/></stand>
            </xsl:for-each>

I am not sure the a key helps with a less than/greater than condition but you could certainly use e.g.
<xsl:copy-of select="$stand2page/standards/stand[@startNum >= $localStart and @endNum &lt;= $localEnd]"/>
to simply formulate the condition with XPath.




--

	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread