Encadenar las transformaciones XSLT
Artículo por Club Developers · 27 mayo 2006
2188 vistas
Si queremos encadenar las transformaciones XSLT tendremos que realizar varias transformaciones succesivas a un documento XML. Cada resultado de transformación será la source de la próxima. Para ayudarnos a realizar esto, el paquete org.xml.sax contiene la clase XMLFilter. Veamos el principio:
Veamos un método que toma por parámetro un fichero XML, dos hojas de estilo xsl (las transformaciones a encadenar) y un fichero html de sallida.
Veamos un método que toma por parámetro un fichero XML, dos hojas de estilo xsl (las transformaciones a encadenar) y un fichero html de sallida.
java
File xsl1, File xsl2, // creación del reader inicial SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); XMLReader reader = spf.newSAXParser().getXMLReader(); // Creación de los filtros a aplicar al reader SAXTransformerFactory stf = (SAXTransformerFactory)TransformerFactory.newInstance(); XMLFilter filtro1 = stf.newXMLFilter(new StreamSource(xsl1)); XMLFilter filtro2 = stf.newXMLFilter(new StreamSource(xsl2)); // "ligamos" el reader a los filtros filtro1.setParent(reader); filtro2.setParent(filtro1); // Creación del source: es el último filtro de la cadena // El resultado es el fichero HTML // Transformación en cadena Transformer transformer = stf.newTransformer(); transformer.transform(source, resultado); }