Re: [docbook-apps] include MathML files with the help of XSL

From
<>
Date
2012-07-11T14:38:44+00:00
ID
Thread
Re: [docbook-apps] include MathML files with the help of XSL
You need to use the FOP plugin from JEuclid (JEuclid.sf.net). 
This will convert the MathML to FOP.

 

I will usually have all my MathML in separate files and then xinclude 
them.

 

    <equation align="center"><title>Here is a 
nice centered equation</title>
      
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
href=""  />
    
</equation>

The MathML support can be a little "touchy" but once its working, its 
pretty solid.

 

Regards

Dean Nelson

 

In a message dated 7/11/2012 6:57:23 A.M. Pacific Daylight Time, 
 writes:

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=""/> 
  

    <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.