xsl-list
[Top] [All Lists]

RE: xsl:result-document appending

2003-09-19 05:53:45
You can't do this; allowing it would break the non-sequential nature of
XSLT (unless you were happy to have the lines in your log file appear in
random order).

XSLT processing should generally be output-driven, not input-driven. If
you need to produce two different outputs that use the same input, then
access the input twice; if this looks as if it will be inefficient, then
save intermediate results in a variable.

Michael Kay


-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf Of 
Kloeck, Erwin
Sent: 19 September 2003 09:13
To: xsl-list(_at_)Lists(_dot_) mulberrytech. com (E-Mail)
Subject: [xsl] xsl:result-document appending


Hi,

I want to write out something like a log file from within a 
for-each loop. I do some processing and at one point within 
the loop I want to write a line to a different file. 

Here is what I do:

--------- log.xml --------- 
<?xml version="1.0" encoding="UTF-8"?>
<top>
  <item value="hugo"/>
  <item value="otto"/>
  <item value="xaver"/>
</top>

--------- log.xsl --------- 
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:fo="http://www.w3.org/1999/XSL/Format";>
  
  <xsl:output name="log-format" method="text" 
omit-xml-declaration="yes"/>
  <xsl:template match="/">
    <xsl:for-each select="top/item">

      <!-- some involved processing with variables that are 
used in the log entry -->

      <xsl:result-document href="log.txt" format="log-format" >
        <xsl:value-of select="concat(string(position()), ' = 
', @value)"/>
      </xsl:result-document >
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

--------- log.txt --------- 
3 = xaver


I would like log.txt to look like this:
--------- log.txt --------- 
1 = hugo
2 = otto
3 = xaver

For this I would like to be able to append to the existing 
log.txt file. Is there a way to do this?


The alternative I can think of is to run trough the for-each 
loop twice, once to do the processing and once to write the 
log file. I hope I have other options.


Thanks

Erwin

..............................

Erwin Kloeck
Produktentwicklung

Oestreicher + Wagner 
Medientechnik GmbH
Frankenthaler Strasse 20
D-81539 Muenchen

Fon   +49 (0)89-68961 216 
Fax   +49 (0)89-68961 271


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>