Creación de cadena original CFDI 3.3 con java

Pasos para creación de la cadena original del CFDI 3.3:

1. Tener anotadas las clases con javax, como en el blog.
2. Obtener el archivo cadenaoriginal_3_3.xslt del SAT.
3. Generar la cadena original con el siguiente código:

...
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.util.JAXBSource;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
...

JAXBContext jaxBContext = JAXBContext.newInstance("mx.gob.sat.v33"); //El paquete donde se encuentra la clase Comprobante
StreamSource ss = new StreamSource(getClass().getResourceAsStream("/xslt33/cadenaoriginal_3_3.xslt")); //La ruta donde se encuentra el archivo xslt
TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setURIResolver(new URIResolverImpl());
Transformer transformer = transformerFactory.newTransformer(ss);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Result out = new StreamResult(baos);
JAXBSource in = new JAXBSource(jaxBContext, comprobante);              
transformer.transform(in, out);
byte[] cadenaOriginalArray = baos.toByteArray();

String cadOrig = new String(cadOrigBytes, "UTF-8");

logger.debug("Cadena Original:" + cadOrigEncod);

...

Las dependencias del archivo cadenaoriginal_3_3.xslt yo las tengo locales, es decir, modifiqué las rutas para que en lugar de ser http fueran rutas locales relativas, por ejemplo:

...
<xsl:include href="http://www.sat.gob.mx/sitio_internet/cfd/EstadoDeCuentaCombustible/ecc11.xslt"/>
...

Lo modifiqué así:

...
<xsl:include href="/xslt33/EstadoDeCuentaCombustible/ecc11.xslt"/>
...

Espero les sirva