Re: Issue with XSLT and FOP when configuring XMLConstants.html#FEATURE_SECURE_PROCESSING

Philippe Mouawad <[email protected]>
Newsgroups gmane.text.xml.fop.user
Message-ID <CAH9fUpZwHLC=ZSg+o1ubgXNHuOPHORtEiUp5M5FLr3heF=fHXQ@mail.gmail.com>
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 <
[email protected]> 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> | [email protected]
[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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.