Actually, the original syntax is correct. It defines the attribute with a default of true. It does a test to see if the setting is present, and sets the result of a test to see if it was set to true. If the setting was present and set to false (or anything other than true or 1), the "$setting='true' or $setting='1'" test will return false.
The issue is actually later in the XSLT where it is testing the resulting value. This test is done as if the variable were a boolean. Since it is a string, you actually have to test to see if it is true ($UseTransactionScopes='true') rather than just use the variable.
I added parameters for OptimizeOperationalMethods and UseTransactionFlow. TransactionFlow is determining whether the client transaction flows to the method whereas TransactionScope determines if the method is done in the context of a transaction. Even if you are not using the client transaction you may want to use transactions, so I thought it was prudent to separate the two. The OptimizeOperationalMethods works as discussed. Also, if OptimizeOperationalMethods is set transaction flow is turned off regardless of the setting.
You can't attach files here, but I uploaded the updated xslt to the library.