Just now when writing a transform, for temporary diagnostic purposes I
needed to produce messages showing (1) the initial string value of an
input element before template application, and (2) the output string value
after template application. Oddly enough I have never before wanted to
do precisely that task.
A moment's reflection suggested that I could capture the result of
<xsl:apply-templates/> and use it as a variable, thus (given XSLT 2.0):
<xsl:template match="INPUT">
<xsl:variable name="appliedTemplates" as="item()+">
<xsl:apply-templates/>
</xsl:variable>
<OUTPUT>
<xsl:copy-of select="$appliedTemplates"/>
</OUTPUT>
<xsl:message>Old value: <xsl:value-of select="."/></xsl:message>
<xsl:message>New value: <xsl:value-of
select="$appliedTemplates"/></xsl:message>
</xsl:template>
This was probably the first time in my years of working with XSLT that
it occurred to me to capture <xsl:apply-templates/> in a variable (I'll
never be an XSLT wizard). I'm wondering: is the procedure above
guaranteed to work in all cases, or is it possible that the
<xsl:copy-of select="$appliedTemplates"/> could ever return something
different from <xsl:apply-templates/> in this context? And is this the best
strategy for comparing input and output states of a template (assuming string
value is the only concern)?
David S.
--
David Sewell, Editorial and Technical Manager
ROTUNDA, The University of Virginia Press
PO Box 400314, Charlottesville, VA 22904-4314 USA
Email: dsewell(_at_)virginia(_dot_)edu Tel: +1 434 924 9973
Web: http://rotunda.upress.virginia.edu/
--~------------------------------------------------------------------
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>
--~--