Variable scope when using imported stylesheets
I'm a bit at a loss how I can use variables in the context of imported stylesheets. I have a stylesheet A that worked standalone up to now, but now needs to import templates from a stylesheet B.
I had defined global variables in A to save myself some typing: they selected some nodesets *deep* in the source tree that I needed very often in the processing, e.g. (simplified)
<xsl:variable name="VehData" select="/root/data/baseDboFileRef/FileRefEval/FileRefVehData" />
I used $VehData whenever I needed to access the "vehicle data". Fine as long as there is only one baseDboFileRef.
But my *new* source tree is going to have several ones, which are treated with the templates from the imported stylesheet:
<xsl:for-each select="/root/data/baseDboFileRef"> <xsl:call-template name="[...]" /> ... many more templates from B called ... </xsl:for-each>
I would like to define variables again to save the typing, so I thought I would need relative paths in the variable to make the access independent of the changing context (baseDboFileRef).
First, I tried defining global variables in the imported stylesheet that were an abbreviated version, as a tribute to the changed context:
<xsl:variable name="ImpVehData" select="FileRefEval/FileRefVehData" />
I didn't have much hope that that would work and indeed it didn't...
Now I could define my variables within each of the templates that get imported and I guess that would work. But since there are so many templates I'm wondering if there is a more elegant way to do this?
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format