[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Capturing result of
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):
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.
[xsl] Capturing result of in a variable
Subject: [xsl] Capturing result of <xsl:apply-templates/> in a variable From: David Sewell <dsewell@xxxxxxxxxxxx> Date: Tue, 6 Dec 2011 14:52:07 -0500 (EST) |
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@xxxxxxxxxxxx Tel: +1 434 924 9973 Web: http://rotunda.upress.virginia.edu/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] sanely ordering template , James A. Robinson | Thread | Re: [xsl] Capturing result of <xsl:, Michael Kay |
[xsl] sanely ordering template impo, James A. Robinson | Date | Re: [xsl] sanely ordering template , Michael Kay |
Month |
Keywords