[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: output the result of the transformation twice, in

Subject: Re: output the result of the transformation twice, indented and not indented, without duplicating the code
From: "G. Ken Holman g.ken.holman@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 23 May 2022 20:31:14 -0000
Re:  output the result of the transformation twice
At 2022-05-23 20:17 +0000, Wolfhart Totschnig
wolfhart.totschnig@xxxxxxxxxxx wrote:
Thank you very much, Ken, Martin, and Graydon!

Martin's solution seems the simplest. I found
that it can be shortened to the following:

   <xsl:output method="xml" indent="no"/>
   <xsl:template match="/">
      <xsl:apply-templates/>
      <xsl:result-document href="indented.xml" indent="yes">
         <xsl:apply-templates/>
      </xsl:result-document>
   </xsl:template>

That is, I can omit one of the <xsl:result-document>, given <xsl:output/>.

@Ken: I don't understand why <xsl:next-match/>
would be better than <xsl:apply-templates/> and
where and why I should put "priority='1000'".
You write: "That will allow Wolfhart's
stylesheet also to support a template rule for
the root node." But the above code is the template for the root node, no?

Indeed it is ... but what if already you had written a template for the root node? Using <xsl:apply-templates/> as you have above would push the children of the root node and your previously-written template for the root node never would be triggered.

Regarding priority, if your <xsl:template
match="/"> is in the same stylesheet fragment as
your template above, there would be an ambiguous
match for the root node when processing begins.
Adding priority="1000" (or some number higher
than the highest priority you have if you have
multiple templates for the root node as I do in
some of my projects) removes the ambiguous match
and ensures your new template above would trigger
first, and not your original template rule for
the root node. Then your original template rule
for the root node would fire as expected.

I like Martin's approach because you don't need
the memory for the storage of the template
results ... but I didn't realize you ALWAYS
wanted both results. I thought you were looking
for two stylesheets with different results but
with no maintenance headaches (at least related
to having the two stylesheets!). Then you could invoke either or both.

Graydon's approach saves the time for executing
the transformation twice, but with the penalty of
internal storage, so you  would have to factor
that in to weighing your alternatives.

. . . . . . Ken



On 23-05-22 15:29, Martin Honnen
<mailto:martin.honnen@xxxxxx>martin.honnen@xxxxxx wrote:

On 23.05.2022 21:07, G. Ken Holman <mailto:g.ken.holman@xxxxxxxxx>g.ken.holman@xxxxxxxxx wrote:
Martin, I would suggest a slight change to your code:

B <xsl:next-match/>

... rather than:

B <xsl:apply-templates/>

... and when the heavy-lifting code is not being imported, then put a
priority="1000" on the suggested match.

That will allow Wolfhart's stylesheet also to support a template rule
for the root node.


Agreed, that is a better way, should have thought about it probably as it is an easy way in XSLT 2 and 3.


<http://www.mulberrytech.com/xsl/xsl-list>XSL-List info and archive <http://lists.mulberrytech.com/unsub/xsl-list/96802>EasyUnsubscribe (<>by email)


--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/s/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |
Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.