You've got yourself an interesting problem. this has nothing to do with the DTD directly, but the namespaces. They are declaring a default namespace that has changed. Not only is this bad design, but ti creates all kinds of problems for XSLT writers like yourself :) Especially in 1.0
Your transformation creates a temporary namespace, with a prefix, that is the same as the default namespace in the input document. This allows you to match on the input document nodes of the default namespace. If they keep changing this, your code will break everytime they change. You could simple change your prefixed namespace declaration everytime they change to whatever the default is.
Like
xmlns:ebc="https://abc.xxx.com/abc/reports/dtd/report_1_7.dtd"
The other option you have is to write a transformation that doesn't CARE what namespace the input nodes are in. This is done by changing every every "match", "select" or any other instruction to a namespace agnostic form.
So instead of having.
<xsl:template match="ebc:Report" />
You would write.
<xsl:template match="*[local-name() = 'Report']" />
This means it matches any input node, whose local-name() is Report. This would solve your problem and them it wouldn't matter what namespace your input document is in.
The other options is to use Java or C# to dynamically built your transformation with the correct namespace before it's executed.