The solution you are asking for requires a script (using cron to trigger something like a shell script or a PHP script) to literally move the file to another directory and then a script to use XSLT to transform the XML. This is somewhat clumsy and difficult because you have so many technologies and lots of places for things to break.
In my opinion, this task is much more easily handled by making both the original XML file and general.xml be generated by PHP.
Make a MySQL table that contains news stories with a flag that indicates the date that it should be "moved" to the general.xml file.
Then, in your original XML file, make some code that looks like this:
<?php
// connect to database
// select all general news stories where the date flag is greater than today
// Loop through results:
?>
<story channel="News" topic1="general">
// display their contents
</story>
<?php // end loop
?>
And then make a general.xml file that does exactly the same thing but shows the news stories where the date is LESS than today (that is, in the past, and therefore, "transferred" to the general.xml file.
In the database, each news story could also have a field that indicates the topic (general, entertainment, programming, hardware, etc, whatever). This field can be used so that PHP can generate the XML appropriately.
With this model, you don't need XSLT to do any transformation. You're not really moving any files. You're just making each file display what's in the database it the files will automatically change when the story's expiration date arrives.