[xsl] how to make a log file in XSLT?

Subject: [xsl] how to make a log file in XSLT?
From: "Jean-Luc Chevillard jeanluc.chevillard@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 12 Mar 2023 20:11:34 -0000
Dear list members,

I have been wondering for a long time whether there was a method for
automatically recording some elements of information every time I run
a given script.

As a minimum example, I would start with an empty file
+++++++++++++++
<?xml version="1.0" encoding="UTF-8"?>
<log>
</log>
+++++++++++++++++++++++

After running the script once, the file would become
+++++++++++++++
<?xml version="1.0" encoding="UTF-8"?>
<log>
   <entry>[2023-03-12 (19:53)]</entry>
</log>
+++++++++++++++++++++++

After running the script a second time, one hour later, the file would become
+++++++++++++++
<?xml version="1.0" encoding="UTF-8"?>
<log>
   <entry>[2023-03-12 (20:53)]</entry>
  <entry>[2023-03-12 (19:53)]</entry>
</log>
+++++++++++++++++++++++

I have just tried doing this by applying the script at the bottom of
this message (in which "copy.xslt" is the identity transform) to a
base file, but as I expected, I obtained an error message stating:

System ID: C:\JLC\XML_tests\cEnAvaraiyam\log_book_experiment.xslt
Scenario: 4a_log_experiment
XML file: C:\JLC\XML_tests\cEnAvaraiyam\cEnA_MSS_rectangles_chart.xml
XSL file: C:\JLC\XML_tests\cEnAvaraiyam\log_book_experiment.xslt
Engine name: Saxon-PE 11.4
Severity: fatal
Problem ID: XTRE1500
Description: Cannot read a document that was written during the same
transformation:
file:/C:/JLC/XML_tests/cEnAvaraiyam/experimental_log_book.xml
Start location: 17:63
Length: 1
URL: http://www.w3.org/TR/xslt20/#err-XTRE1500

Is there a method for obtaining the desired result by using XSLT?

Thanks for your answers

-- Jean-Luc

++++++++++++++++++++++++++++
log_book_experiment.xslt
++++++++++++++++++++++++++++
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
    xmlns:xs="http://www.w3.org/2001/XMLSchema";
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:import href="copy.xslt"/>

    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>

    <xsl:variable name="TIME_STAMP"
select="concat('[',format-date(current-date(), '[Y]-[M02]-[D02]'), '
(', format-time(current-time(), '[H]:[m]'), ')]')"/>

    <xsl:variable name="Log_file_name" select="'experimental_log_book.xml'"/>

    <xsl:variable name="current_log_content" select="document($Log_file_name)"/>

    <xsl:variable name="new_log_content">
        <log>
            <entry><xsl:value-of select="$TIME_STAMP"/></entry>
            <xsl:for-each select="$current_log_content//entry">
                <xsl:copy-of select="."/>
            </xsl:for-each>
        </log>
    </xsl:variable>

    <xsl:template match="/">
        <xsl:result-document href="{$Log_file_name}">
            <xsl:copy-of select="$new_log_content"></xsl:copy-of>
        </xsl:result-document>
        <xsl:apply-templates select="root"/>
    </xsl:template>


</xsl:stylesheet>
+++++++++++++++++++++++++++++++++

Current Thread