How to perform output in two destinations

How can I effectively process data with result that consist of two outputs
(first is a main result, and second is a log).

In order to achieve required results I have to perform either:
  a) two time processing: first in order to get main result and another to
get log; or
  b) create temporary tree with both main result and log, and then create
two result xml(s) by filtering data in that temporary tree.

>From my user's perspective it would be useful to have a stack of active
named (or indexed) output trees and ability to dynamically switch
between them. The following example demonstrates such a hypothetical
feature:

 <xsl:variable name="log" tree-name="log">
  <xsl:variable name="result" tree-name="result">

      Generate here main result

      <xsl:output-tree name="log">
        Put here log data
      </xsl:output-tree>

      Generate here main result again

   </xsl:variable>

  <!--
    Here we have result in $result and log in the $log
  -->
 </xsl:variable>

or

<xsl:principal-result-document tree-name="result"/>

<template name="my-template">
  <xsl:result-document tree-name="log">

      <xsl:output-tree name="result">
        Generate here main result

        <xsl:output-tree name="log">
          Put here log data
        </xsl:output-tree>

        Generate here main result again
      </xsl:output-tree>

  </xsl:result-document>
</template>

<!--
  here we have result in the principal-result-document and
  log in the secondary result-document.
-->


In these examples tree-name attribute defines a name of tree (temporary
tree or result tree) and xsl:output-tree element defines what destination to
use
for output.

--
Nesterovsky Vladimir
vladimir@nesterovsky-bros.com

Received on Tuesday, 22 October 2002 04:22:29 UTC