Ésta vez intentando razonar la respuesta...
Bueno, primero la solución, sin tocar las dtd's:
Baja la definición del espacio de nombres en el documento xml al nodo dist:empresa, el documento xml quedaría así:
---------------------------------------------------------------------
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="muestra.xsl"?>
<!--
<producto xmlns:dist="http://osmosislatina.com/definiciones/distribuidores.dtd">
-->
<producto>
<nombre modelo="xdfsdf">
<disponibilidad lugar="almacen"> Si </disponibilidad>
<descripcion> 60 Watts Doble Canal </descripcion>
</nombre>
<!--
<dist:empresa>
-->
<dist:empresa xmlns:dist="http://osmosislatina.com/definiciones/distribuidores.dtd">
<dist:serie>5845-2543-8614</dist:serie>
<dist:nombre>Sonido Real</dist:nombre>
</dist:empresa>
</producto>
---------------------------------------------------------------------
Y la explicación:
Cuando defines un espacio de nombres a nivel del nodo raíz, la xsl entiende que todos sus nodos hijos, incluido él (producto) comienzan por dicho espacio de nombres (dist:producto), por eso no te encuentra el nodo producto en la xsl.
Espero que ésto te valga.
En cuanto al parser, yo uso directamente el Internet Explorer 6.0.26 para abrir el documento xml, y me lo hace ok.
¿Es para algún proyecto o es una prueba?
Un saludo.
Jose.
[8]