This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

transforming Content Markup (not presentation) similar to MML


I have been exploring using "content markup" (chapter 4) 
(http://www.w3.org/TR/2001/PR-MathML2-20010108/chapter4.html)
of the Mathematical Markup Language to represent sets of equations.
For example, the following MML represents the quadratic equation
y1 = (a*x+b)*x+c :

<apply>
 <eq/>
 <ci>y1</ci>
 <apply>
  <plus/>
  <apply>
   <times/>
   <apply>
    <plus/>
    <apply>
     <times/>
     <ci>a</ci>
     <ci>x</ci>
    </apply>
    <ci>b</ci>
   </apply>
   <ci>x</ci>
  </apply>
  <ci>c</ci>
 </apply>
</apply>

I need a set of general purposes xslt templates that will 
reconstruct the inline equation "y1=(a*x+b)*x+c;" given the 
MML above. One issue that comes up is precedence of the 
operators (<plus/>, <minus/>, <times/> ...). For example 
the following XML:

<apply>
 <times/>
 <ci>a</ci>
 <apply>
  <plus/>
  <ci>b</ci>
  <ci>c</ci>
 </apply>
</apply>

Needs to be rendered as a*(b+c) not a*b+c. My approach has been to 
use an external precedence document to lookup the precedence of operators
using Ogbuji's Lookup method (http://www-106.ibm.com/developerworks/
library/x-xsltip.html):

<precedences>
 <item apply="eq" precedence="1"/>
 <item apply="plus" precedence="2"/>
 <item apply="minus" precedence="2"/>
 <item apply="times" precedence="3"/>
 <item apply="divide" precedence="3"/>
</precedences>

and to surround the output of inner <apply>'s with balanced parentheses
whenever the precedence of the inner apply is higher than the precedence
of the outer <apply>'s. The goal then would be able to transform
MML representing lengthy code fragments such as:

y=(a*x+b)+c;   } maybe a
...            } hundred
z=(A*y+B)*y+C; } lines

*including* constructs for program flow (for, do, while, if, case, etc.).
The stylesheets may need to target different langauges, so I would
like to set things up to be as general as possible to allow for
extension.

So these are my questions for the list:

1) Has anyone attempted this type of application (styling MML into
   inline equations, ie what MML calls content markup - chap 4)?

2) How would you approach this problem? Do utilities already exist?

3) MML does not have constructs for program flow. The closest MML
   comes to program flow is piecewise definition of functions via
   <piecewise>, conditionals <condition> and a "such that" tag.
   How would you represent tags for if statements, loops, switch or 
   case statements keeping in mind the XML will need to be
   transformed via XSLT into standard looking c-code (for example).
   My emphasis for this questions is to insure the XML can be
   easily styled into a target language (such as c-code).

Please don't submit code (unless you need an end of the day challenge!) 
as I am looking first at the big picture and trying to evaluate 
among alternatives.

Regards,

Dan



__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]