My stylesheet is named foo-bar.xsl, but XSLTC created a translet named foo_bar. Is that a bug?
No. The name of a translet is usually the name of the stylesheet, the name specified using the translet-name attribute on the XSLTC TransformerFactory or the name specified for the translet on the command-line invocation. However, the name of the translet is also the name of a Java class. Any character that is not permitted in a class name is replaced with an underscore.