Another possibility (untested) is for your App to create a lockfile while it is writing out the XML document and then remove the lockfile when the document write is completed. Within your XSL have a test to see if the lockfile exists and do nothing if it exists.
<xsl:variable name="lockexists">
<xsl:choose>
<xsl:when test="document('/tmp/lockfile')">true</xsl:when>
<xsl:otherwise>false</xsl:otherwise>
</xsl:choose>
</xsl:variable>
The lockfile should be a simple XML document with a different namespace so that document() does not complain.