Is there any single way to use the same method for generating PDFs? (instead of HTML)
I modified the method described earlier to generate PDF files with MathML equations, but I didn't succeed.
Attempt one:
I just changed the import href link from HTML to FO
Content of the transformation XSL file: (PDF_MathML.xsl)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="">/docbook-xsl-1.77.1/fo/docbook.xsl"/>
<xsl:output method="html" encoding="utf-8" indent="yes" />
<xsl:template match="inlineequation | equation | informalequation">
<xsl:variable name="id" select="@id"/>
<xsl:variable name="mathml" select="concat('math/',$id, '.math')"/>
<xsl:apply-templates select="document($mathml,.)/*"/>
</xsl:template>
</xsl:stylesheet>
I used Apache-FOP on Windows:
fop.bat -c conf/fop.xconf -xml DSP_korrekted_2_abrak.xml -xsl PDF_MathML.xsl -param body.font.family Times-Roman -param title.font.family Times-Roman -pdf manual.pdf
It gave me some errors related to missing fo: namespace. (or maybe root? I cant remember well)
Attempt two:
I modified the fo/math.xsl file, and included the following lines:
<xsl:template match="inlineequation | equation | informalequation">
<xsl:variable name="id" select="@id"/>
<xsl:variable name="mathml" select="concat('math/',$id, '.math')"/>
<xsl:apply-templates select="document($mathml,.)/*"/>
</xsl:template>
It gave me a bunch of MathML-related warnings:
WARNING: Unknown formatting object "{http://www.w3.org/1998/Math/MathML} etc. etc.
And then a bunch of MathML files not found:
WARNING: Page xxiv: Unresolved ID reference "Eq_1096" found.
Ideas appreciated
2012/6/28 Zoltán János Jánosi <>
Here is the result of "dynamically include MathML files with the help of XSLT when generating HTML files":
Test setup:
DocBook v4.4 files with equation, inlineequation and informalequation tags, where every equatin has an id
MathML files has the same name as the equations id's
DocBook XSLT files v1.77.1 (http://sourceforge.net/projects/docbook/files/docbook-xsl/1.77.1/docbook-xsl-1.77.1.zip/download)
Content of the transformation XSL file:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="">
<xsl:output method="html" encoding="utf-8" indent="yes" />
<xsl:template match="inlineequation | equation | informalequation">
<xsl:variable name="id" select="@id"/>
<xsl:variable name="mathml" select="concat('math/',$id, '.math')"/>
<xsl:apply-templates select="document($mathml,.)/*"/>
</xsl:template>
</xsl:stylesheet>
I used Saxon 6.5.5 (http://sourceforge.net/projects/saxon/files/saxon6/6.5.5/saxon6-5-5.zip/download) as an XSLT 1.0 processor. (XSLT 2.0 processors gave errors with DocBook v1.77.1)
The following command was used:
java -jar saxon.jar -o output.html DSP_DocBook_v44_v0.45.xml HTML5_MathML.xsl
The resulting html file contains the MathML equations and in FireFox they look great.
This solution is not perfect (lacks differrences of equation types), but it works and is a good starting point for further development.