It looks xalan-2.7.2 was root cause. Excluding it from dependencies and letting JDK embedded Transformer (com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl) do the job fixed my problem.
Regards On Mon, Mar 25, 2019 at 5:30 PM Philippe Mouawad < p.moua...@ubik-ingenierie.com> wrote: > Hello, > I have an issue when generating PDF from Java objects using XSLFO and XSLT: > I have this code: > > > TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", > Thread.currentThread().getContextClassLoader()); > templates = factory.newTemplates(new > StreamSource(PdfGenerator.class.getResourceAsStream(ORDERS_XSL))); > FOUserAgent foUserAgent = fopFactory.newFOUserAgent(); > Source src = getSourceForCommandList(commandeList); > try { > Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, > foUserAgent, out); > > Result res = new SAXResult(fop.getDefaultHandler()); > > templates.newTransformer().transform(src, res); > } finally { > out.flush(); > } > > My xslt uses fo namespace: > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.1" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format"> > > > > <xsl:template match="orders"> > <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> > <fo:layout-master-set> > <fo:simple-page-master master-name="simpleA4" > page-height="29.7cm" page-width="21cm" > margin-top="2cm" > margin-bottom="1cm" margin-left="0.5cm" > margin-right="0.5cm"> > <fo:region-body /> > </fo:simple-page-master> > </fo:layout-master-set> > <xsl:apply-templates select="order" /> > </fo:root> > </xsl:template> > ... > </xsl:template> > </xsl:stylesheet> > > > It works fine and generates a PDF from source Objects using Apache FOP and > XSLT. > > However, when I add this line to respect best practices regarding security: > > > factory.setFeature([XMLConstants.FEATURE_SECURE_PROCESSING][1], true); > > It breaks because fo namespace is not loaded if my understanding is > correct, I have those errors on template parsing: > > SystemId Unknown; Line #13; Column #67; "master-name" attribute is not > allowed on the fo:simple-page-master element! > SystemId Unknown; Line #13; Column #67; "page-height" attribute is not > allowed on the fo:simple-page-master element! > SystemId Unknown; Line #13; Column #67; "page-width" attribute is not > allowed on the fo:simple-page-master element! > SystemId Unknown; Line #13; Column #67; "margin-top" attribute is not > allowed on the fo:simple-page-master element! > > > Looking into FAQ or user mailing list, I fail to see how we should > configure TransformerFactory to allow loading of FOP schema. > Can somebody point me to the documentation or a way ? > > Thanks for any help > Regards > > [1]: > https://docs.oracle.com/javase/7/docs/api/javax/xml/XMLConstants.html#FEATURE_SECURE_PROCESSING > -- [image: logo Ubik Ingenierie] <https://www.ubik-ingenierie.com> Philippe Mouawad Senior Performance Expert 320914981 <+33320914981> | p.moua...@ubik-ingenierie.com [image: ubik-ingenierie.com] ubik-ingenierie.com <https://www.ubik-ingenierie.com> | [image: 03.20.91.49.81] 03.20.91.49.81 <+33320914981> | [image: 23 rue du chemin de fer , 59100 , Roubaix] 23 rue du chemin de fer, 59100, Roubaix <https://www.openstreetmap.org/#map=18/50.69454/3.16455>