<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6082261199073042821</id><updated>2012-01-23T02:44:02.593Z</updated><category term='IBM'/><category term='MathML'/><category term='nodeset'/><category term='emacs'/><category term='emoji'/><category term='XSLT'/><category term='schematron'/><category term='CSS'/><category term='html5'/><category term='Arabic'/><category term='Opera'/><category term='STIX'/><category term='XML'/><category term='F#'/><category term='Windows'/><category term='googlecode'/><category term='Office-2007'/><category term='Job'/><category term='Entities'/><category term='C#'/><category term='htmlparse'/><category term='Unicode'/><category term='blogger'/><category term='pmathml'/><category term='c2s'/><category term='anniversary'/><category term='NAG'/><category term='HTML'/><category term='pmathmlascii'/><category term='OpenOffice.org'/><category term='DSDL'/><category term='XHTML'/><category term='mmlclipboard'/><category term='clipboard'/><category term='JavaScript'/><title type='text'>David Carlisle</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>52</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-5128036845286602356</id><published>2011-12-07T22:29:00.001Z</published><updated>2011-12-07T22:45:07.746Z</updated><title type='text'>Robert Miner</title><content type='html'>&lt;p&gt;Robert Miner, my friend and colleague on the W3C Math Working Group died yesterday from liver cancer.&lt;/p&gt;
&lt;p&gt;Robert has Chaired or Co-Chaired the group since it started, and has been active in developing standards for mathematics on the web at the W3C since at least 1996. He will be sorely missed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-5128036845286602356?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5128036845286602356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5128036845286602356'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2011/12/robert-miner.html' title='Robert Miner'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7203103454958870428</id><published>2011-09-23T00:46:00.000+01:00</published><updated>2011-09-23T17:43:24.604+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='googlecode'/><title type='text'>html5mathml</title><content type='html'>&lt;br /&gt;
&lt;p&gt;As some of you may have &lt;a href="https://plus.google.com/107847268022850354754/posts/bUFnV5Xii7L#107847268022850354754/posts/bUFnV5Xii7L"&gt;seen on google+&lt;/a&gt; With a bit of help, I have MathML working in Firefox Mobile on Android. The key observation (of Karl Tomlinson) was that I needed a recent version of the font I was using (&lt;a href="http://dejavu-fonts.org/wiki/Main_Page"&gt;dejavu serif&lt;/a&gt;) as older ones did not have  the necessary glyphs to build up &amp;ldquo;stretchy&amp;rdquo; characters such as large brackets needed for mathematical display.&lt;/p&gt;&lt;p&gt;So I have added support for Firefox/Android to my javascript library for enabling mathml-in-html5 (Firefox all versions, IE+MathPlayer 6-10, Chrome, Safari, Opera are all supported to some extent).&lt;/p&gt;&lt;h3&gt;html5mathml on googlecode&lt;/h3&gt;&lt;p&gt;This reminded me that I never actually announced its existence, hence this posting. The javascript is maintained in a google code svn repository at &lt;a href="http://html5mathml.googlecode.com/"&gt;html5mathml&lt;/a&gt;, although you might want to start with the test/example file at &lt;a href="http://html5mathml.googlecode.com/svn/trunk/test1.html"&gt;test1.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The code is all freely available, It is all under the MIT licence, except for the copy of the dejavu serif font which is available under its own custom free licence, included in the distribution.&lt;p&gt;&lt;h3&gt;Usage&lt;/h3&gt;&lt;p&gt;The idea is that you write a conforming html5+mathml document and just add the line:&lt;/p&gt;&lt;pre&gt;&amp;lt;script src="html5mathml.js"&gt;&amp;lt;/script&gt;&lt;/pre&gt;&lt;p&gt;into the head of the document, adjusting the src attribute to point to a local copy of the files downloaded from the above location. Please do use local copies, googlecode is a source repository not intended for serving production code to be used. Depending on the client browser being used, this JavaScript file may use one of two css files or the above mentioned dejavu font, all of which are available from the source repository.&lt;/p&gt;&lt;p&gt;Comments fixes and experiences using more browsers all welcome, either here, or in email or on the www-math list.&lt;/p&gt;&lt;h3&gt;Comparison with MathJax&lt;/h3&gt;&lt;p&gt;Currently the primary javascript library for enabling MathML support in browsers is &lt;a href="http://www.mathjax.org/"&gt;MathJax&lt;/a&gt;, so perhaps I should offer some  comparison. MathJax does &lt;em&gt;far&lt;/em&gt; more than html5mathml, and generally speaking produces better MathML display, however it is somewhat slower and perhaps harder to set up locally (although it now has a public CDN server distribution which simplifies things greatly if  access to the server can be assumed).&lt;/p&gt;&lt;p&gt;MathJax includes parsers for Tex-like syntax as well as MathML; this library assumes the input is MathML and relies on the browser to parse it (although includes some fixup for pre-html5 legacy browser parsing.)  MathJax can be configured to do its own MathML rendering using CSS, or uses the native MathMl rendering in the browser if available. html5mathml essentially just assumes that the browser has MathML support although it does include css similar to that used in the the &lt;a href="http://www.w3.org/TR/mathml-for-css/"&gt;CSS profile for MathML&lt;/a&gt;. As such it loads much more quickly and reveals the MathML capabilities of the browser.&lt;/p&gt;&lt;h3&gt;Future Plans&lt;/h3&gt;&lt;p&gt;I try to track browser developments as far as possible (IE10 preview + MathPlayer for example is supported) but this is a spare time activity and I don't have access to all platforms, so any comments or code contributions for other platforms is always welcome. Currently the largest component is the dejavu font, probably I should subset that to just the characters needed for stretchy symbols. IE10 will no doubt require some changes once the full version comes out, and hopefully there will be a version of Chrome using the webkit MathML rendering (as now used in Safari). Similar techniques may be used to enable svg-in-html in legacy browsers that only support svg in xml. An early version of this code, handling MathML and SVG on a smaller range of browsers was discussed in a &lt;a href="http://blog.nag.com/2010/09/html5-possible-implications-for.html"&gt;posting I made to the NAG blog&lt;/a&gt; last year.&lt;/p&gt;&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7203103454958870428?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7203103454958870428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7203103454958870428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7203103454958870428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7203103454958870428'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2011/09/html5mathml.html' title='html5mathml'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-5355229852293320169</id><published>2011-07-18T19:15:00.001+01:00</published><updated>2011-07-18T22:44:30.187+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>slinky canvas</title><content type='html'>&lt;p&gt;The &lt;a href="http://blog.nag.com/"&gt;NAG Blog&lt;/a&gt;, to which I contribute from time to time, has a permanent link to Mike Croucher's blog, &lt;a href="http://www.walkingrandomly.com/"&gt;Walking Randomly&lt;/a&gt;. I happened to notice his &lt;a href="http://www.walkingrandomly.com/?p=3715"&gt;current article on parametric plotting&lt;/a&gt;. The parametric plots are demonstrated with an applet providing  Mathematica generated plots and slider controls. Mathematica is a nice piece of software but I couldn't help but think that a modern web browser ought to be able to do this without help from an external application.&lt;/p&gt;
&lt;p&gt;HTML (5) provides a &lt;a href="http://diveintohtml5.org/canvas.html"&gt;canvas drawing API&lt;/a&gt; that ought to be able to plot a curve or two, and also &lt;a href="http://diveintohtml5.org/forms.html#type-range"&gt;built in slider form controls&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've not used canvas before, but it turns out to be pretty trivial to use, and my attempt is shown below. If you have a canvas enabled browser the plot should appear looking like the plot shown in Mike Croucher's article. Below that should appear some input forms that allow you to change the parameters. These appear as slider controls if a browser understands the HTML5 markup for this (Chrome does in its dev channel version at least). In other browsers they appear as text boxes, which allow you to change the values. (Firefox (4+) and IE (9+) work this way.)
The plot should be redrawn if you move the mouse off the form controls.&lt;p&gt;
&lt;p&gt;Actually I prefer the text entry control to the slider, as it is easier to exactly control the value. I'd hoped that the arrow keys could be used to step the slider, but as implemented in chrome at least, that isn't the case. No doubt with a bit more scripting such keyboard shortcuts could be added, but this will do as a first attempt.&lt;/p&gt;

&lt;hr&gt;


&lt;canvas id="slinky" width="400" height="600"&gt;&lt;/canvas&gt;

&lt;hr&gt;

&lt;div id="parameters"&gt;&lt;/div&gt;

&lt;hr&gt;

&lt;p&gt;e: 0 &lt;input onmouseup="javascript:draw();"   id="eslide" type="range"
       min="0"
       max="80"
       step="1"
       value="1"&gt; 80&lt;/p&gt;
&lt;p&gt;f: 0 &lt;input onmouseup="javascript:draw();"   id="fslide" type="range"
       min="0"
       max="80"
       step="1"
       value="80"&gt; 80&lt;/p&gt;
&lt;p&gt;g: 0 &lt;input onmouseup="javascript:draw();"   id="gslide" type="range"
       min="0"
       max="80"
       step="1"
       value="1"&gt; 80&lt;/p&gt;
&lt;p&gt;h: 0 &lt;input onmouseup="javascript:draw();"   id="hslide" type="range"
       min="0"
       max="80"
       step="1"
       value="1"&gt; 80&lt;/p&gt;
&lt;p&gt;i: 0 &lt;input onmouseup="javascript:draw();"   id="islide" type="range"
       min="0"
       max="80"
       step="1"
       value="80"&gt; 80&lt;/p&gt;

&lt;script type="text/javascript"&gt;

function xoft (t,e,f,g,h,i) {
 return 200+100*(Math.cos(e*t) - Math.cos(f*t)*Math.sin(g*t));
}

function yoft (t,e,f,g,h,i) {
 return 300-(100*(2*Math.sin(h*t) - Math.sin(i*t)));
}


function draw(){

var e = document.getElementById('eslide').value;
var f = document.getElementById('fslide').value;
var g = document.getElementById('gslide').value;
var h = document.getElementById('hslide').value;
var i = document.getElementById('islide').value;

document.getElementById('parameters').innerHTML = e + " " + f + " " + g + " " + h + " " + i;

 var canvas = document.getElementById('slinky');
 if (canvas.getContext){
 var ctx = canvas.getContext('2d');
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  var w = canvas.width;
  canvas.width = 1;
  canvas.width = w;

  ctx.beginPath();
  ctx.moveTo(xoft(0.0,e,f,g,h,i),yoft(0.0,e,f,g,h,i));
  for (var t=0;t&lt;8;t=t+0.001) {
    ctx.lineTo(xoft(t,e,f,g,h,i),yoft(t,e,f,g,h,i));
  }
  ctx.stroke();
  }
 }
 window.addEventListener('load', draw, false);
&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-5355229852293320169?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/5355229852293320169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=5355229852293320169' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5355229852293320169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5355229852293320169'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2011/07/slinky-canvas.html' title='slinky canvas'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-6558270756580673410</id><published>2011-07-08T21:36:00.003+01:00</published><updated>2011-07-11T22:24:30.920+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c2s'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='googlecode'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Converting to Strict Content MathML</title><content type='html'>&lt;h2&gt;Some OpenMath History&lt;/h2&gt;

&lt;p&gt;MathML and OpenMath have always had a shared history and more or
less documented ways of converting between them. Conceptually the
conversion is very simple and OpenMath &lt;em&gt;symbol&lt;/em&gt;
&lt;code&gt;abc&lt;/code&gt; could be expressed as the Content MathML symbol
&lt;code&gt;&amp;lt;csymbol&gt;abc&amp;lt;/csymbol&gt;&lt;/code&gt;. Successive versions of
MathML have in fact added features that made this conversion simpler
and better information preserving. MathML2 added &lt;b&gt;csymbol&lt;/b&gt; which
is a better fit for OpenMath symbols than &lt;b&gt;ci&lt;/b&gt;. In MathML1 and
MathML2 further information about the OpenMath Symbol would have to be
packaged into the definitionURL attribute. In MathML3 we added explicit
support for recording Content Dictionaries by adding a cd attribute to
csymbol.&lt;/p&gt;

&lt;p&gt;Although the basic idea of the transformation was simple, the
details of the transformation were complicated by a desire to map to
the pre-defined MathML elements where available. So &lt;code&gt;&amp;lt;OMS
name="sin" cd="trans1"/&gt;&lt;/code&gt; should map to the MathML element 
 &lt;code&gt;&amp;lt;sin/&gt;&lt;/code&gt; rather than
 &lt;code&gt;&amp;lt;csymbol&gt;sin&amp;lt;/csymbol&gt;&lt;/code&gt;.
The relationship between the predefined MathML Content MathML forms
and the simpler, more regular, but much more verbose, OpenMath syntax
was not formally specified by MathML so had to be specified as part of
the transformation to OpenMath. An early version of such a
transformation description is this 10 year old document still
available from the OpenMath site.
&lt;a href="http://www.openmath.org/documents/om-mml.pdf"&gt;Conversion
between MathML and OpenMath&lt;/a&gt;.
Around the same time, the conversions were implemented in XSLT. The
original versions predated XSLT 1, although the versions currently
available from the OpenMath site use XSLT 2. Converting from OpenMath
to MathML: 
&lt;a
    href="http://svn.openmath.org/OpenMath/OpenMath2++/xsl/om2cmml.xsl"&gt;om2cmml&lt;/a&gt;
and from MathML to OpenMath:
&lt;a
    href="http://svn.openmath.org/OpenMath/OpenMath2++/xsl/cmml2om.xsl"&gt;cmml2om&lt;/a&gt;.&lt;/p&gt;


&lt;h2&gt;MathML3 Strict Content MathML&lt;/h2&gt;

&lt;p&gt;The relationship between 
 &lt;code&gt;&amp;lt;sin/&gt;&lt;/code&gt; and
 &lt;code&gt;&amp;lt;csymbol&gt;sin&amp;lt;/csymbol&gt;&lt;/code&gt;
may rightfully be seen as a purely MathML issue and not something that
should be a by-product of converting to the OpenMath form
 &lt;code&gt;&amp;lt;OMS name="sin"/&gt;&lt;/code&gt; and so MathML3 introduced, for each
 of its Content layout forms, an explicit &lt;em&gt;rewrite rule&lt;/em&gt;
 expressing the construct in &lt;em&gt;Strict Content MathML&lt;/em&gt; which is a
 restricted form just using csymbol.
Section 4.6  of Chapter 4 of the MathML 3 spec specifies an explicit
multi-pass algorithm applying these rewrite rules to convert any valid
Content MathML expression into an expression just using the restricted
&lt;em&gt;Strict Content MathML&lt;/em&gt; vocabulary.
&lt;a href="http://www.w3.org/TR/MathML3/chapter4.html#contm.p2s"&gt;4.6 The
Strict Content MathML Transformation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Conceptually a conversion to Strict Content MathML could be made
which first converted to OpenMath, then converted back to MathML using
a stylesheet that removed all the special case rules originally added
to &lt;a
    href="http://svn.openmath.org/OpenMath/www/cdfiles2/xsl/om2cmml.xsl"&gt;om2cmml&lt;/a&gt;
and documented in the OpenMath report referenced above. This was in
fact implemented and is how the majority of the Strict Content MathML
examples in Chapter 4 of the MathML spec were constructed. However
there were some choices to be made in the mapping specification and in
some cases the old OpenMath stylesheets made different choices. Where
feasible I updated the stylesheets to match, but one essential
structural difference remained. cmml2om implements a typical XSLT
depth first walk over the input document, applying whichever template
matches at that point. However the working group felt that the
exposition of the algorithm was clearer if it was expressed as a
multi-pass algorithm where each rule is applied in order over the whole
tree, with the result being passed on to the next stage, to be
rewritten by the next rewrite rule. These two approaches usually
produce the same result, but in edge cases where the order of
transformations matter they produce results that are (baring bugs)
mathematically equivalent, but are structurally different.&lt;/p&gt;
&lt;p&gt;As a requirement for MathML3 to proceed to W3C Recommendation
status, we needed to show that the algorithm in &lt;a
href="http://www.w3.org/TR/MathML3/chapter4.html#contm.p2s"&gt;Section
4.6&lt;/a&gt;
was implementable and did the right thing. It was clear that while my
conversion via OpenMath was fairly reasonable it wasn't implementing
the algorithm as specified and didn't produce the specified results in
all cases.&lt;/p&gt;

&lt;h2&gt;C2S Implementation&lt;/h2&gt;
&lt;p&gt;Fortunately Robert Miner (co-chair of the Math WG) stepped up and
offered to implement the algorithm as specified. It was good that he
did, as inevitably, implementation experience showed some gaps or
inconsistencies in the first drafts of the algorithm, and the final
published form is much improved as a result of this
implementation.&lt;/p&gt;
&lt;p&gt;The initial home of the new stylesheet was in the W3C member area
of the W3C CVS repository. Recently Robert suggested that we make it
public, and asked if I'd host it at my google code
&lt;a href="http://code.google.com/p/web-xslt/wiki/Overview"&gt;web-xslt&lt;/a&gt;
project site, since it is there and hosts other MathML related XSLT
stylesheets.&lt;/p&gt;

&lt;p&gt;So Robert's implementation is now available (under W3C or MIT
licen[cs]e) from
&lt;a
    href="http://web-xslt.googlecode.com/svn/trunk/c2s/c2s.xsl"&gt;google code: c2s&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Comments on the stylesheet are probably best addressed to the &lt;a
href="mailto:www-math@w3.org"&gt;www-math&lt;/a&gt; mailing list, but comments
may also be dropped here on this blog or on the google code wiki pages.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-6558270756580673410?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/6558270756580673410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=6558270756580673410' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6558270756580673410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6558270756580673410'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2011/07/converting-to-strict-content-mathml.html' title='Converting to Strict Content MathML'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1301723979942955144</id><published>2011-06-08T01:08:00.000+01:00</published><updated>2011-06-08T01:08:33.948+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>MathML for CSS Profile</title><content type='html'>&lt;p&gt;I'm delighted to announce that the MathML for CSS profile has been published as a W3C Recommendation.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.w3.org/TR/2011/REC-mathml-for-css-20110607/"&gt;http://www.w3.org/TR/2011/REC-mathml-for-css-20110607/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;This had a dependency on CSS 2.1 which was also published today.&lt;/p&gt;

&lt;p&gt;This completes the three REC-track documents produced by the MathML3-era Working Group, joining:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.w3.org/TR/2010/REC-MathML3-20101021/"&gt;http://www.w3.org/TR/2010/REC-MathML3-20101021/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.w3.org/TR/2010/REC-xml-entity-names-20100401/"&gt;http://www.w3.org/TR/2010/REC-xml-entity-names-20100401/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The MathML for CSS profile (most of the technical work for which was done by George Chavchanidze of Opera) defines how a subset of MathML may be implemented using CSS. This is useful for two reasons: Firstly, it highlights possible places where CSS could be extended to improve its expressive power (so allowing a larger subset of MathML to be implemented) or secondly, it may be viewed directly as an implementation of a useful subset of MathML (and is similar to the CSS stylesheet for MathML which is used for MathML support in Opera).

As usual, comments are welcome here or on www-math@w3.org list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1301723979942955144?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1301723979942955144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1301723979942955144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1301723979942955144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1301723979942955144'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2011/06/mathml-for-css-profile.html' title='MathML for CSS Profile'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-2622692273833814770</id><published>2010-11-07T00:44:00.003Z</published><updated>2010-11-07T10:59:27.650Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='emoji'/><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Arabic'/><category scheme='http://www.blogger.com/atom/ns#' term='Unicode'/><title type='text'>Unicode 6:XML Entities draft</title><content type='html'>&lt;p&gt;Unicode 6.0 was published last month, and the proposals for Unicode 6.1 are firming up, both of these releases have significant new characters for mathematical use, so I have updated the &lt;a href="http://www.w3.org/2003/entities/2007doc/"&gt;Editors' draft&lt;/a&gt; of &amp;ldquo;XML Entity Definitions for Characters &amp;rdquo;.&lt;/p&gt;&lt;p&gt;The main source file, unicode.xml has been updated to contain information for all characters in Unicode 6.0, and the provisional allocations for the Arabic Math Alphabets in Unicode 6.1. There is no change to the set of entity names or the MathML or HTML dtd derived from these sources.&lt;/p&gt;
&lt;p&gt;Although this document is styled as an editors' draft for an update to &lt;a href="http://www.w3.org/TR/2010/REC-xml-entity-names-20100401/"&gt;the current recommendation&lt;/a&gt;, there are no immediate plans to publish a formal update to the W3C recommendation. However I hope to track changes to Unicode in this editors' draft, and perhaps once the proposals to add Arabic mathematical characters to Unicode are all processed, we may try to submit this for formal review as a &lt;a href="http://www.w3.org/2004/02/Process-20040205/tr#cfr-edited"&gt;Proposed Edited Recommendation&lt;/a&gt;.
&lt;h3&gt;Unicode 6.0&lt;/h3&gt;
&lt;p&gt;Most of the new characters in Unicode 6.0 are not directly related to Mathematics, although the large collection of &amp;ldquo;emoji&amp;rdquo; derived from characters used in the Japanese mobile phone industry provides some interesting characters that I'm sure could be used for mathematical operators (U+1F4A9 perhaps?). However there are some specifically mathematical characters including new heavy (ultra bold) plus and minus (U+2795 and U+2796) which may find use either in display contexts or as additional operators distinct from the usual plus and minus.&lt;/p&gt;
&lt;h3&gt;Unicode 6.1 (proposals)&lt;/h3&gt;
&lt;p&gt;The mathematical alphabets (bold, fraktur, double-struck, etc. ) that are in Unicode, and available as values in MathML 2's mathvariant attribute fit well with the mathematical traditions using the Roman and Greek alphabets but don't really work with other alphabets, notably Arabic.&lt;/p&gt;
&lt;p&gt;Azzeddine Lazrek &lt;a href="http://www.w3.org/TR/arabic-math/"&gt;proposed&lt;/a&gt; that MathML and Unicode be extended with additional math alphabets corresponding to conventions used in Arabic typeset Mathematics. (initial, tailed, looped, stretched) these were added to MathML in the recently finalised MathML 3,0, and the  corresponding code points have been allocated to Unicode (all in the block 1EE??) and planned to be standardised in Unicode 6.1. I have provisionally added this data to unicode.xml, and &lt;a href="http://www.w3.org/2003/entities/2007doc/1EE.html"&gt;added a table &lt;/a&gt;showing the characters to the entities draft.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-2622692273833814770?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/2622692273833814770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=2622692273833814770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2622692273833814770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2622692273833814770'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/11/unicode-6xml-entities-draft.html' title='Unicode 6:XML Entities draft'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-6839422170817157051</id><published>2010-10-21T23:21:00.001+01:00</published><updated>2010-10-22T09:45:33.905+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>MathML 3.0 Recommendation</title><content type='html'>&lt;p&gt;I'm pleased to report that MathML 3.0 is today published as a &lt;a href="http://www.w3.org/TR/2010/REC-MathML3-20101021/"&gt; W3C Recommendation&lt;/a&gt;. Seven years to the day since the last MathML Recommendation, &lt;a href="http://www.w3.org/TR/2003/REC-MathML2-20031021/"&gt;MathML 2.0 2nd edition&lt;/a&gt; was published on 21st October 2003.&lt;/p&gt;
&lt;p&gt;So, what have we been doing for seven years?&lt;/p&gt;
&lt;p&gt;My Working Group colleague, Neil Soiffer has just posted a &lt;a href="http://news.dessci.com/2010/10/mathml-3-now-official-w3c-recommendation.html"&gt;blog entry&lt;/a&gt; describing some of the main features and linking to a &lt;a href="http://www.dessci.com/en/products/mathplayer/tech/mathml3.htm"&gt; nice summary&lt;/a&gt; of the main new features in  MathML3, so I won't list them all in detail here, however some of the headline features are listed below.&lt;/p&gt;
&lt;h4&gt;Additions to control bi-directional layout, for Arabic styles in particular&lt;/h4&gt;
&lt;p&gt;The &lt;a href="http://www.w3.org/TR/arabic-math/"&gt;Arabic Note&lt;/a&gt; detailed some extensions to MathML 2.0 that would enable a richer variety of right-to-left layouts as used in typesetting Arabic mathematics. In MathML 3.0 this bi-directional control is fully integrated into the language, allowing the effect of each of the presentation layout elements to be specified in RTL and LTR modes.&lt;/p&gt;
&lt;h4&gt;Elementary math layouts (long division, etc)&lt;/h4&gt;
&lt;p&gt;Previously long division and long multiplication etc could be typeset using table layout and a lot of spacing adjustment but this was difficult to produce and very hard to process in an accessible way, by for example a speech renderer. MathML 3 introduces new elements (mstack and mlongdiv, principally) which enable a much more natural and accessible encoding of these layout schemes.&lt;/p&gt;
&lt;h4&gt;Linebreaking of mathematics&lt;/h4&gt;
&lt;p&gt;For the first time MathML 3 specifies control over automatic linebreaking and provides improved features for manual forced linebreaking and alignment of expressions.&lt;/p&gt;
&lt;h4&gt;Officially registered MIME Types&lt;/h4&gt;
&lt;p&gt;The mime type application/mathml+xml has been unofficially used for some time, but it is now officially registered (along with two more mime types specific to Presentation and Content MathML). These Mime types might prove particularly useful in systems that use MIME to label clipboard fragments.&lt;/p&gt;
&lt;h4&gt;Closer alignment between Content  MathML and OpenMath&lt;/h4&gt;
&lt;p&gt;Chapter 4, describing Content MathML has been totally rewritten to provide a direct, explicit alignment with &lt;a href="http://www.openmath.org/"&gt;OpenMath&lt;/a&gt;. This alignment was always in the background (the two languages being developed at roughly the same time, by overlapping groups of people) but making the alignment explicit, and making small changes on both the MathML and OpenMath side has allowed many rough edges to be removed, and I think gives a much clearer presentation of the &amp;ldquo;semantics&amp;rdquo; underlying the Content MathML elements.&lt;/p&gt;
&lt;h4&gt;RelaxNG Schema&lt;/h4&gt;
&lt;p&gt;The normative DTD used for MathML 1 and 2 is replaced in MathML 3 by a &lt;a href="http://www.w3.org/Math/RelaxNG/"&gt;Relax NG schema&lt;/a&gt;. this is much more expressive than a DTD, and allows many of the constraints that previously could only be expressed in words to be built in to the grammar. A &lt;a href="http://www.w3.org/Math/DTD/"&gt;DTD&lt;/a&gt; (and &lt;a href="http://www.w3.org/Math/XMLSchema/"&gt;XSD &lt;/a&gt;schema) are still provided in the Math Working Group pages, as a convenience.&lt;/p&gt;
&lt;h4&gt;Many clarifications and improvements throughout the spec&lt;/h4&gt;
&lt;p&gt;If you stare at the MathML2 spec for 7 years you may notice that some parts are clearer than others.&lt;/p&gt;
&lt;h4&gt;Integration with HTML5&lt;/h4&gt;
&lt;p&gt;This is briefly mentioned in Chapter 6, but mainly specified in the &lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-map-element.html#mathml"&gt;HTML 5 draft specification&lt;/a&gt;. One of the main difficulties of using MathML on the web has always been that it was designed as an XML application to fit with XHTML, and using XHTML has proved to be far more difficult  than envisaged in 1998 when XML started. Some notable browsers are only now starting to support XHTML in beta releases, and even in browsers with good  XML/XHTML support, it is difficult to integrate XHTML with HTML based document systems (such as the blogger system hosting this blog). HTML5, allowing MathML (and SVG) in text/html systems will be a massive boost to getting Mathematics into web based systems.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-6839422170817157051?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/6839422170817157051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=6839422170817157051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6839422170817157051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6839422170817157051'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/10/mathml-30-recommendation.html' title='MathML 3.0 Recommendation'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1076709365520595312</id><published>2010-10-21T22:00:00.000+01:00</published><updated>2010-10-21T22:00:59.922+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>A MathML for CSS Profile 2nd PR</title><content type='html'>&lt;p&gt;&lt;a href="http://www.w3.org/TR/2010/PR-mathml-for-css-20100810/"&gt;A MathML for CSS Profile&lt;/a&gt; Has today been edited &lt;i&gt;in place&lt;/i&gt; to confirm that it has passed all the ballots and implementation requirements to proceed to full W3C Recommendation status.&lt;/p&gt;&lt;p&gt;The final hurdle is that it has a normative dependency on CSS 2.1 which is currently at &lt;a href="http://www.w3.org/TR/2009/CR-CSS2-20090908/"&gt;Candidate Recommendation stage&lt;/a&gt;, so MathML for CSS is blocked at Proposed Recommendation stage until CSS 2.1 reaches Recommendation. Hopefully early next year.&lt;/p&gt;&lt;p&gt;There are apparently several W3C Working drafts similarly blocked by CSS 2.1 (which has been at Candidate Recommendation stage for over a year). Hopefully the CSS Working Group will get the remaining issues resolved and testing reports done this year!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1076709365520595312?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1076709365520595312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1076709365520595312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1076709365520595312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1076709365520595312'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/10/mathml-for-css-profile-2nd-pr.html' title='A MathML for CSS Profile 2nd PR'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8572197276248586956</id><published>2010-08-10T21:44:00.000+01:00</published><updated>2010-08-10T21:44:45.483+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>MathML3 PR</title><content type='html'>&lt;p&gt;The W3C today published &lt;a href="http://www.w3.org/TR/2010/PR-MathML3-20100810/"&gt;MathML3&lt;/a&gt; and the &lt;a href="http://www.w3.org/TR/2010/PR-mathml-for-css-20100810/"&gt;MathML for CSS Profile&lt;/a&gt; as proposed recommendations.&lt;/p&gt;&lt;p&gt;PR is almost the final hurdle, and assuming none of the W3C members object at this stage, then we should be on course to reach Recommendation status in September.&lt;/p&gt;&lt;p&gt;As always, comments are welcome on www-math@w3.org, or via this blog.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8572197276248586956?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8572197276248586956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8572197276248586956' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8572197276248586956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8572197276248586956'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/08/mathml3-pr.html' title='MathML3 PR'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-4782806000896267595</id><published>2010-06-10T22:55:00.000+01:00</published><updated>2010-06-10T22:55:14.139+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>MathML3 2nd Last Call</title><content type='html'>&lt;p&gt;A new draft of MathML3 has been released: &lt;a href="http://www.w3.org/TR/2010/WD-MathML3-20100610/"&gt;http://www.w3.org/TR/2010/WD-MathML3-20100610/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is (again) a Last Call draft. There were sufficient changes and clarifications resulting from the Candidate Recommendation review draft that we decided to issue a Last Call again, to allow people to comment on the changes before (hopefully) we progress to Proposed Recommendation status.&lt;/p&gt;
&lt;p&gt;We have provided a &lt;a href="http://www.w3.org/TR/2010/WD-MathML3-20100610/Overview-d.html"&gt;Diff marked version&lt;/a&gt; and a &lt;a href="http://www.w3.org/Math/Documents/lc-changes.html"&gt;List of changes&lt;/a&gt; to make it easier to review the changes since the CR draft.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-4782806000896267595?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/4782806000896267595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=4782806000896267595' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4782806000896267595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4782806000896267595'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/06/mathml3-2nd-last-call.html' title='MathML3 2nd Last Call'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8488516602684316494</id><published>2010-05-28T20:52:00.001+01:00</published><updated>2010-05-28T20:53:46.588+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='STIX'/><title type='text'>STIX Fonts 1.0</title><content type='html'>15 years in the making, they finally released the fonts!&lt;br /&gt;


&lt;a href="http://www.stixfonts.org/"&gt;http://www.stixfonts.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8488516602684316494?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8488516602684316494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8488516602684316494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8488516602684316494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8488516602684316494'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/05/stix-fonts-10.html' title='STIX Fonts 1.0'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1165483438678932097</id><published>2010-04-01T21:57:00.000+01:00</published><updated>2010-04-01T21:57:00.300+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML Entity Definitions for Characters</title><content type='html'>&lt;p&gt;The W3C today published &lt;a href="http://www.w3.org/TR/2010/REC-xml-entity-names-20100401/"&gt;XML Entity Definitions for Characters&lt;/a&gt; as a Recommendation (i.e., Web standard). It's taken a long time (over a decade) but I hope you find them useful...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1165483438678932097?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1165483438678932097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1165483438678932097' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1165483438678932097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1165483438678932097'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/04/xml-entity-definitions-for-characters.html' title='XML Entity Definitions for Characters'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1155296075826323964</id><published>2010-03-11T13:41:00.001Z</published><updated>2011-07-09T00:54:03.592+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAG'/><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><title type='text'>F#</title><content type='html'>&lt;p&gt;Mostly these days I suppose I'm known for MathML and XSLT stuff. Before that I used TeX rather a lot (I must check one of these days whether I have yet posted as often to xsl-list as I have to comp.text.tex). Around the time I started to use TeX (1987 or thereabouts) I was mainly programming in the functional programming language Standard ML. I haven't done so much with ML since, but the ML family of languages have been having something of a renaissance recently, especially with Microsoft's 
&lt;a href="http://msdn.microsoft.com/en-gb/fsharp/default.aspx"&gt;F#&lt;/a&gt; language.&lt;/p&gt;
&lt;p&gt;So I've been returning to my roots and doing a bit of functional programming over the last few days, writing  &lt;a href="http://www.nag.co.uk/numeric/DT/fsharp/index.asp"&gt;an article hosted at NAG&lt;/a&gt; on calling the NAG library from F#.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1155296075826323964?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1155296075826323964/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1155296075826323964' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1155296075826323964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1155296075826323964'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/03/f.html' title='F#'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-4950492854888193813</id><published>2010-02-21T13:01:00.000Z</published><updated>2010-02-21T13:01:06.265Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML Entities: W3C Vote</title><content type='html'>&lt;p&gt;As noted in a &lt;a href="http://dpcarlisle.blogspot.com/2010/02/entities-proposed-recommendation.html"&gt;previous post&lt;/a&gt;, XML Entity Definitions for Characters is now a Proposed Recommendation.&lt;/p&gt;&lt;p&gt;To help the W3C make the decision to make the final transition to Recommendation status the Advisory Committee members are asked to submit comments. If you are in a W3C member company, please ask your AC representative to comment via the form&lt;br /&gt;&lt;a href="http://www.w3.org/2002/09/wbs/33280/PR-xml-entity-names-20100211/"&gt;http://www.w3.org/2002/09/wbs/33280/PR-xml-entity-names-20100211/&lt;/a&gt;&lt;br /&gt; by the 11th of March!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-4950492854888193813?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/4950492854888193813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=4950492854888193813' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4950492854888193813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4950492854888193813'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/02/xml-entities-w3c-vote.html' title='XML Entities: W3C Vote'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1020727205358624021</id><published>2010-02-11T23:15:00.001Z</published><updated>2010-02-11T23:16:13.251Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Entities: Proposed Recommendation</title><content type='html'>&lt;p&gt;I'm pleased to be able to report that today the W3C has published&lt;br /&gt;
&lt;i&gt;XML Entity Definitions for Characters&lt;/i&gt;&lt;br /&gt;
as a &lt;a href="http://www.w3.org/TR/2010/PR-xml-entity-names-20100211/"&gt;Proposed Recommendation&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It's only really a list of names and numbers, but it seems to have taken up a large chunk of my life since I &lt;a href="http://lists.w3.org/Archives/Public/www-math/1998Aug/0003.html"&gt;accidentally fell into supporting these things&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1020727205358624021?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1020727205358624021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1020727205358624021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1020727205358624021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1020727205358624021'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/02/entities-proposed-recommendation.html' title='Entities: Proposed Recommendation'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8031617032633560435</id><published>2010-01-21T23:31:00.003Z</published><updated>2010-01-22T15:22:06.742Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='clipboard'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='mmlclipboard'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='googlecode'/><title type='text'>MathML on the Clipboard</title><content type='html'>I got a new machine at &lt;a href="http://www.nag.co.uk"&gt;work&lt;/a&gt; with Windows 7 on it.&lt;br /&gt;
&lt;br /&gt;
One of the more interesting applications coming with Windows 7 is the &lt;a href="http://www.google.co.uk/search?q=math+input+panel"&gt;Math Input Panel&lt;/a&gt;. This is designed for pen input on a tablet-style device and performs pretty impressively accurate recognition of mathematical expressions.
While designed for a tablet, it also works pretty well if you are just “writing” the expression with a finger on a small laptop trackpad, which is how I have been using it.&lt;br /&gt;
&lt;br /&gt;
The Math Input Panel is designed with a very simple interface with virtually no customisation options.
It offers no way of saving the expressions generated and just offers a simple insert button that tries to insert the math expression at the insertion point in a currently open application. This works well for Word 2007 which accepts MathML from the clipboard and transparently converts it to its internal form and renders it, but other more generic tools such as XML editors that could use the MathML do not accept MathML from the clipboard in this way. Unlike MathPlayer or Word, The Math Input Panel doesn't offer fallback text representations of the XML markup on the clipboard. Marko Panic, the program manager for the development of this tool confirmed to me that this was a design decision as they didn't want the end user to be faced with raw XML.
This is not unreasonable but not what I wanted personally (I like to see my XML raw:-). Marko confirmed that the MathML is on the clipboard and it should be possible to extract it with a few lines of code, or if I wanted a more extensive customisation there was documentation of the API offered by the underlying DLL
available at&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/dd317324%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd317324(VS.85).aspx&lt;/a&gt;&lt;br /&gt;
and&lt;br /&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/dd317311%28VS.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd317311(VS.85).aspx&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I decided to brush up my C# forms programming and produced a small form that
shows any MathML on the clipboard. The main code (everything apart from the boilerplate Visual Studio files) is available on &lt;a href="http://code.google.com/p/web-xslt/source/browse/trunk/mmlclipboard"&gt;google code&lt;/a&gt; While it's particularly useful to see the MathML generated by the Math Input panel, it also works with other applications, notably MathPlayer and Word, that place MathML on the clipboard.&lt;br /&gt;
&lt;br /&gt;
While looking via Google for some programming tips on my form, I came across a very similar &lt;a href="http://bartdesmet.net/blogs/bart/archive/2009/02/11/mathml-visualizer-in-c-on-windows-7.aspx"&gt;blog posting from last year&lt;/a&gt;. That form had some differences though (displaying the IE folding tree view of the XML) so I completed my form here. The screenshot shows the Math Input Panel interpreting my appalling handwriting, and the mmlclipboard form displaying the generated MathML.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/_atYtnL7KtBk/S1jfgHxypFI/AAAAAAAABo0/qYAVfgnR-C8/s1600-h/clpbrd1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_atYtnL7KtBk/S1jfgHxypFI/AAAAAAAABo0/qYAVfgnR-C8/s320/clpbrd1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8031617032633560435?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8031617032633560435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8031617032633560435' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8031617032633560435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8031617032633560435'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2010/01/mathml-on-clipboard.html' title='MathML on the Clipboard'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_atYtnL7KtBk/S1jfgHxypFI/AAAAAAAABo0/qYAVfgnR-C8/s72-c/clpbrd1.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1944627073959494357</id><published>2009-12-20T23:22:00.005Z</published><updated>2009-12-20T23:57:15.886Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='pmathml'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='googlecode'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>XSLT for Presentation MathML in a Browser</title><content type='html'>&lt;p&gt;Back in 2002 at the MathML Conference I presented a stylesheet, pmathml.xsl,  that detected the browser being used and inserted whatever was necessary to enable MathML on that platform. The stylesheet is distributed, along with the slides from the conference presentation, from &lt;a href="http://www.w3.org/Math/XSL/"&gt;the W3C Math/XSL&lt;/a&gt; area.&lt;/p&gt;&lt;p&gt;The stylesheet is showing its age, in particular a large part of its complexity is due to the fact that that it encodes two completely separate languages in one file, XSLT, and the  &amp;lsquo;wd-xslt&amp;rsquo; language used in IE5. IE 5 is not an important platform these days, and for some years MathPlayer has been able to act as a MIME Filter in Internet Explorer, and so automatically insert the needed object references into the document without using an XSL stylesheet. However the XSL stylesheet mechanism still has uses, and may be adapted to other browsers. An updated version of this stylesheet has been in use for the &lt;a href="http://www.nag.co.uk/numeric/FL/nagdoc_fl22/xhtml/FRONTMATTER/manconts.xml"&gt;NAG Library&lt;/a&gt; documentation.&lt;/p&gt;&lt;p&gt;I have placed an updated version of pmathml.xsl on &lt;a href="http://code.google.com/p/web-xslt/source/browse/trunk/pmathml"&gt;google code&lt;/a&gt;. This loses all the wd-xsl code so requires IE6 or later, but it detects Opera and Safari and in that case inserts some extra elements to make it more likely that the documents meets the conditions of the &lt;a href="http://www.w3.org/TR/mathml-for-css/"&gt;MathML profile for CSS&lt;/a&gt;, and  links to some CSS to render the resulting elements. The CSS is a combination of some old CSS of mine and George Chavchanidze's CSS developed as part of the MathML profile for CSS.&lt;/p&gt;&lt;p&gt;Unfortunately xlink links no longer work in Firefox 3, and so this version uses some javascript to give link behaviour to any element with an xlink:href attribute. Since it is doing this it also enables links for unprefixed href attributes, in anticipation of MathML3's href attribute for linking.&lt;/p&gt;&lt;p&gt;I hope to extend this to enhance MathML3 support, rendering the new MathML3 features as far as possible in existing browsers. The current check in is mainly to form a baseline in google code before adding any new MathML3 features.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1944627073959494357?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1944627073959494357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1944627073959494357' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1944627073959494357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1944627073959494357'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/12/xslt-for-presentation-mathml-in-browser.html' title='XSLT for Presentation MathML in a Browser'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-2847923583942227988</id><published>2009-12-18T19:34:00.006Z</published><updated>2009-12-18T20:16:52.237Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='pmathmlascii'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='googlecode'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>MathML as ASCII Art</title><content type='html'>&lt;p&gt;Normally one wants to use a full typesetting system, and access to fonts with a rich variety of symbols to typeset mathematics. But sometimes you don't.&lt;/p&gt;&lt;p&gt;Plain text, restricted to ASCII, still has its uses. It is possible to lay out the 2-dimensional mathematical notations as a kind of &amp;lsquo;ASCII-art&amp;rsquo;. Historically in the days before GUI workbook-style interfaces most Computer Algebra systems would use this kind of layout, and they can usually still be persuaded to use this style even in current versions.&lt;/p&gt;&lt;p&gt;I've just made available a very old stylesheet, it was I think one of the first XSLT 2 stylesheets that I wrote, which renders MathML in this style. It still does not do all of MathML3 (or 2) presentation MathML, but I intend to extend it as time permits.&lt;/p&gt;&lt;p&gt;The stylesheet is available on &lt;a href="http://code.google.com/p/web-xslt/source/browse/#svn/trunk/pmathmlascii"&gt;google code&lt;/a&gt; and some examples running against the MathML test suite are shown below.&lt;/p&gt;&lt;p&gt;The google code project also has the htmlparse styesheet discussed previously in this blog, and a perhaps more serious XSLT stylesheet to render MathML via TeX, again that will be extended to cover most of MathML3, as part of the MathML CR implementation phase &amp;ndash; something to do over the Christmas break. Documentation of exactly what's in the project will be added eventually, it's only been running a day.&lt;/p&gt;&lt;hr /&gt;&lt;a href="http://www.w3.org/Math/testsuite/build/main/Topics/LargeOp/sum1-full.xhtml"&gt;sum1&lt;/a&gt;&lt;br /&gt;&lt;img src="http://www.w3.org/Math/testsuite/build/main/Topics/LargeOp/sum1.png" alt="test suite image" /&gt;&lt;br /&gt;&lt;pre&gt;
infinity  
  ----    
   \      
    )   x 
   /     i
  ----    
 i = 0    
&lt;/pre&gt;&lt;hr /&gt;&lt;a href="http://www.w3.org/Math/testsuite/build/main/Presentation/ScriptsAndLimits/msubsup/msubsup1-full.xhtml"&gt;msubsup1&lt;/a&gt;&lt;br /&gt;&lt;img src="http://www.w3.org/Math/testsuite/build/main/Presentation/ScriptsAndLimits/msubsup/msubsup1.png" alt="test suite image" /&gt;&lt;br /&gt;&lt;pre&gt;

 1    
/  x  
| e dx
/     
 0    
&lt;/pre&gt;&lt;hr /&gt;&lt;a href="http://www.w3.org/Math/testsuite/build/main/Presentation/TablesAndMatrices/mtable/mtable2-full.xhtml"&gt;mtable2&lt;/a&gt;&lt;br /&gt;&lt;img width="70%" src="http://www.w3.org/Math/testsuite/build/main/Presentation/TablesAndMatrices/mtable/mtable2.png" alt="test suite image" /&gt;&lt;br /&gt;&lt;pre style="font-size: 75%"&gt;

                                                     2          2                          
1                     x + y                         x  + 2yx + y                           
                       2          2                  3      2     2     3                  
x + y                 x  + 2yx + y                  x  + 3yx  + 3y x + y                   
 2          2          3      2     2     3          4      3     2 2     3     4          
x  + 2yx + y          x  + 3yx  + 3y x + y          x  + 4yx  + 6y x  + 4y x + y           
 3      2     2     3  4      3     2 2     3     4  5      4      2 3      3 2     4     5
x  + 3yx  + 3y x + y  x  + 4yx  + 6y x  + 4y x + y  x  + 5yx  + 10y x  + 10y x  + 5y x + y 
&lt;/pre&gt;


&lt;hr /&gt;
&lt;a href="http://www.w3.org/Math/testsuite/build/main/Presentation/GeneralLayout/mfrac/mfrac4-full.xhtml"&gt;mfrac4&lt;/a&gt;&lt;br /&gt;&lt;img src="http://www.w3.org/Math/testsuite/build/main/Presentation/GeneralLayout/mfrac/mfrac4.png" alt="test suite image" /&gt;&lt;br /&gt;&lt;pre&gt;
       _ 
1 +  \|5 
---------
    2    
&lt;/pre&gt;&lt;hr /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-2847923583942227988?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/2847923583942227988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=2847923583942227988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2847923583942227988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2847923583942227988'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/12/mathml-as-ascii-art.html' title='MathML as ASCII Art'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1018609535056059571</id><published>2009-12-16T17:38:00.003Z</published><updated>2009-12-16T17:44:39.519Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>MathML3 article at IBM developerWorks</title><content type='html'>&lt;p&gt;IBM developerWorks have just published an article that I wrote on on MathML3, &lt;a href="http://www.ibm.com/developerworks/xml/library/x-mathml3"&gt;http://www.ibm.com/developerworks/xml/library/x-mathml3&lt;/a&gt;. I doubt that it has any information new to readers of this blog, but perhaps it may reach a new audience and spread the word about MathML3.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1018609535056059571?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1018609535056059571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1018609535056059571' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1018609535056059571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1018609535056059571'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/12/mathml3-article-at-ibm-developerworks.html' title='MathML3 article at IBM developerWorks'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-2451429968359605779</id><published>2009-12-15T20:41:00.002Z</published><updated>2009-12-15T20:46:23.099Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Candidate Recommendations</title><content type='html'>&lt;p&gt;I'm pleased to be able to announce that the Candidate Recommendation drafts of MathML3 and the MathML for CSS profile are available at  &lt;a href="http://www.w3.org/TR/2009/CR-MathML3-20091215/"&gt;http://www.w3.org/TR/2009/CR-MathML3-20091215/&lt;/a&gt; and &lt;a href="http://www.w3.org/TR/2009/CR-mathml-for-css-20091215/"&gt;http://www.w3.org/TR/2009/CR-mathml-for-css-20091215/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It is during this Candidate Recommendation phase that implementation work needs to begin in earnest as we need to show via the test suite that all the features are implemented by two implementations.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-2451429968359605779?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/2451429968359605779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=2451429968359605779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2451429968359605779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2451429968359605779'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/12/candidate-recommendations.html' title='Candidate Recommendations'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-553994134961974583</id><published>2009-12-11T13:27:00.003Z</published><updated>2009-12-11T13:39:53.317Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='DSDL'/><title type='text'>Thoughts on Revising DSRL</title><content type='html'>&lt;p&gt;A while ago now, I posted an &lt;a href="http://dpcarlisle.blogspot.com/2008/10/dsdl-initial-thoughts.html"&gt;article on DSDL&lt;/a&gt;. In it I commented that part 8, DSRL, had a lot of problems. The new Project Editor, Francis Cave, has recently posted the first cut at a revised draft of DSRL, and also posted some thoughts from me suggesting some more extensive revisions that could be made.&lt;/p&gt;&lt;p&gt;The posting can be seen in the public archives of dsdl-discuss at &lt;a href="http://lists.dsdl.org/dsdl-discuss/2009-12/0002.html"&gt;http://lists.dsdl.org/dsdl-discuss/2009-12/0002.html&lt;/a&gt;. dsdl-discuss is a closed list for members of SC 34/WG 1, however comments are welcome on the public list dsdl-comment 'at' dsdl.org  archived at &lt;a href="http://lists.dsdl.org/dsdl-comment/"&gt;http://lists.dsdl.org/dsdl-comment/&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-553994134961974583?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/553994134961974583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=553994134961974583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/553994134961974583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/553994134961974583'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/12/thoughts-on-revising-dsrl.html' title='Thoughts on Revising DSRL'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-5300817163579915858</id><published>2009-11-17T17:57:00.002Z</published><updated>2009-11-17T18:01:30.509Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><title type='text'>XML Entity Definitions for Characters</title><content type='html'>&lt;p&gt;I'm pleased to announce that the last call draft of XML Entity Definitions for Characters has been published:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/2009/WD-xml-entity-names-20091117/"&gt;http://www.w3.org/TR/2009/WD-xml-entity-names-20091117/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments are welcome on &lt;a href="mailto:www-math@w3.org"&gt;www-math@w3.org&lt;/a&gt;, please put the text&lt;br&gt;[last-call...&lt;br&gt;in the subject line, preferably like this:&lt;br&gt;[Entities-last-call] - summary of comment&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-5300817163579915858?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/5300817163579915858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=5300817163579915858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5300817163579915858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5300817163579915858'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/11/xml-entity-definitions-for-characters.html' title='XML Entity Definitions for Characters'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7753584317576744731</id><published>2009-10-06T21:26:00.002+01:00</published><updated>2009-10-06T21:30:56.077+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>MathML CSS Profile</title><content type='html'>&lt;p&gt;The W3C has just published the &lt;a href="http://www.w3.org/TR/2009/WD-mathml-for-css-20091006/"&gt;Last Call draft of A MathML for CSS profile&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;2 down &lt;a href="http://www.w3.org/2003/entities/2007doc/overview.html"&gt;1 to go!&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7753584317576744731?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7753584317576744731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7753584317576744731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7753584317576744731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7753584317576744731'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/10/mathml-css-profile.html' title='MathML CSS Profile'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-4721304378986147292</id><published>2009-09-25T00:19:00.004+01:00</published><updated>2009-09-25T00:34:44.412+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>MathML3 Last Call</title><content type='html'>&lt;p&gt;The Last Call draft of MathMl3 has just been published at
&lt;a href="http://www.w3.org/TR/2009/WD-MathML3-20090924/"&gt;http://www.w3.org/TR/2009/WD-MathML3-20090924/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Please send comments to www-math@w3.org, starting your subject line with &lt;br /&gt;
[MathML3-last-call]&lt;/p&gt;&lt;p&gt;The has been more refinement of the elementary math layout markup in chapter 3, a lot of work cleaning up and normalising chapter 4 on Content Markup, and a new Relax NG Schema, which is now almost all generated (via XSLT) from the text of the spec, as attributes and content models are now displayed in a tabular form more amenable to machine processing.&lt;/p&gt;&lt;p&gt;Also for the first time, we are publishig DTD and XSD versions of the schema,  both of which are automatically converted from the Relax NG schema by a combination of XSLT (to simplify the schemas) and trang (to do the actual conversion) and (in the case of dtd) sed processing to massage the dtd into xhtml modularisation form, so that it supports namespaces as far as is possible with a dtd.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-4721304378986147292?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/4721304378986147292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=4721304378986147292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4721304378986147292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4721304378986147292'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/09/mathml3-last-call.html' title='MathML3 Last Call'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7174317065389184348</id><published>2009-06-04T21:31:00.005+01:00</published><updated>2009-06-04T21:38:40.320+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>New MathML Drafts</title><content type='html'>&lt;p&gt;I'm pleased to announce another draft of both MathML 3 and the MathML profile for CSS.&lt;/p&gt;&lt;p&gt;"Mathematical Markup Language (MathML) Version 3.0"&lt;br /&gt;&lt;a href="http://www.w3.org/TR/2009/WD-MathML3-20090604/"&gt;http://www.w3.org/TR/2009/WD-MathML3-20090604/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;"A MathML for CSS profile"&lt;br /&gt;&lt;a href="http://www.w3.org/TR/2009/WD-mathml-for-css-20090604/"&gt;http://www.w3.org/TR/2009/WD-mathml-for-css-20090604/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments to &lt;a href="mailto:www-math@w3.org"&gt;www-math&lt;/a&gt; please.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7174317065389184348?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7174317065389184348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7174317065389184348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7174317065389184348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7174317065389184348'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2009/06/new-mathml-drafts.html' title='New MathML Drafts'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-4398496696243151999</id><published>2008-11-17T22:56:00.002Z</published><updated>2008-11-17T23:00:13.839Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>MathML3 Draft</title><content type='html'>&lt;p&gt;We just released a new working draft of MathML3&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/2008/WD-MathML3-20081117/"&gt;http://www.w3.org/TR/2008/WD-MathML3-20081117/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Comments to &lt;a href="mailto:www-math@w3.org"&gt;www-math@w3.org&lt;/a&gt; please!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-4398496696243151999?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/4398496696243151999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=4398496696243151999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4398496696243151999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4398496696243151999'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/11/mathml3-draft.html' title='MathML3 Draft'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1792065112523450480</id><published>2008-10-17T00:17:00.001+01:00</published><updated>2008-10-17T00:23:54.724+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='schematron'/><category scheme='http://www.blogger.com/atom/ns#' term='DSDL'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>DSDL: initial thoughts</title><content type='html'>&lt;p&gt;Prompted by some questions of Rick Jelliffe on the schematron list, I've been looking at &lt;a href="http://dsdl.org/"&gt;DSDL&lt;/a&gt; lately.  This is a multipart ISO/IEC standard defining various aspects of XML validation. The parts are at various stages; from fully ratified international standard to (I think) no existing draft at all. Below is a summary of collected thoughts on the various parts.&lt;/p&gt;  &lt;dl&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;1: Overview &lt;/dt&gt; &lt;dd&gt; &lt;p&gt;No great surprises, just an index into the following parts...&lt;/p&gt; &lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;2: Regular-grammar-based validation - RELAX NG&lt;/dt&gt; &lt;dd&gt; &lt;p&gt;For anyone working with document oriented XML, Relax NG is the gold standard of schema languages. More expressive than either XSD or DTD, more naturally namespace aware and (especially in its compact syntax form) particularly easy to write.&lt;/p&gt; &lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;3: Rule-based validation - Schematron &lt;/dt&gt; &lt;dd&gt; &lt;p&gt;I think this is probably the oldest of the languages that were pulled together to form DSDL. It's stood the test of time. I've ever really had occasion to use it much but I have from time to time made experiments with schematron, including the first implementation of the html based "schematron-report" version, and somewhat more recently some &lt;a href="http://dpcarlisle.blogspot.com/2007/04/schematron-experiments.html"&gt;experiments on this blog&lt;/a&gt;.&lt;/p&gt; &lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;4: Namespace-based validation dispatching language - NVDL  &lt;/dt&gt; &lt;dd&gt; &lt;p&gt;NVDL, or something like it, should perhaps form the basis of a solving the perennial problem of forming "Compound Documents" such as including MathML in a host document type such as XHTML, or DocBook, or TEI, etc. Nagging doubts that it sometimes seems rather heavyweight just for validation, for any particular case (such as MathML in XHTML) it's usually possible to construct a compound schema directly, and as we found while looking at &lt;a href="http://www.w3.org/2004/CDF/"&gt;W3C CDF&lt;/a&gt;, in many contexts defining a compound schema is the easy part of defining a compound document format, the real problems lurk elsewhere defining the behaviour and inheritance of properties across the interface between the languages. Such questions as should the current font, or font size be inherited from the host document type to the embedded fragment.&lt;/p&gt; &lt;p&gt;However problems of property inheritance and event propagation are rightly out of scope for a validation language, so this really is just musing on a perennial problem the we have with MathML in (anything), which NVDL doesn't really address &lt;/p&gt;&lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;5: Data Type Library Language - DTLL &lt;/dt&gt; &lt;dd&gt;&lt;p&gt;I don't know, this is more or less the right thing, although I sent &lt;a href="http://lists.dsdl.org/dsdl-comment/2008-01/0003.html"&gt;some minor comments&lt;/a&gt; re use of xpath2 (which the current draft avoids in favour of xpath 1).&lt;/p&gt;&lt;p&gt;But perhaps it's just too late. XSD datatypes are rather horrible and rather inflexible but they more or less do the job, most of the time, and even Relax NG users are by now in the habit of using xs:boolean and friends, as of course are Xpath 2 users. perhaps it is too late for this to ever gain traction, but perhaps not...&lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;6: Path-based integrity constraints&lt;/dt&gt; &lt;dd&gt; &lt;p&gt;This part appears to be on hold, with no public draft.&lt;/p&gt; &lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;7: Character Repertoire Description Language - CRDL &lt;/dt&gt; &lt;dd&gt; &lt;p&gt;CRDL, or CREPDL as it appears to be known now is what sparked my current interest in DSDL.  specifically Rick Jelliffe asked &lt;a href="http://www.eccnet.com/pipermail/schematron/2008-September/000014.html"&gt;on the schematron list&lt;/a&gt; for code to convert a crepdl specification into a schematron (which is effectively the same as converting it into one or more xpath expressions.&lt;/p&gt; &lt;p&gt;I sketched out a rough implementation in that thread, but actually I think that this is perhaps harder than it need be as CREPDL is using too powerful a technology to express character ranges. Regular expressions are highly efficient mechanism for specifying &lt;em&gt;substrings&lt;/em&gt;, but CREPDL, as currently specified just really specifies single characters. A character repertoire is just a partition of the Unicode code range into three (characters that are definitely in, definitely out, or maybe in the repertoire.) However if regexp were not used, a different syntax would have to be invented for character ranges, and I don't have any good suggestions here, so perhaps using regex is OK, perhaps...&lt;/p&gt;&lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;8: Document Schema Renaming Language - DSRL &lt;/dt&gt; &lt;dd&gt; &lt;p&gt;It's difficult to know what to say about this section. WG1 recently published a &lt;a href="http://www.itscj.ipsj.or.jp/sc34/open/1085.htm"&gt;Defect Report&lt;/a&gt; detailing some of the comments I'd raised on the public comment list. But really that list just scratches the surface. The specification as it stands is completely contradictory and unimplementable. &lt;/p&gt; &lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;9: Datatype- and Namespace-aware DTDs &lt;/dt&gt; &lt;dd&gt; &lt;p&gt;This seems to be technically sound, but doomed attempt to give a veneer of namespace respectability to DTD. Perhaps in 1998 this might have had a chance of taking off but now, post Relax NG, I can't see the point. DTD are not going to go away any time soon despite predictions in  some quarters, at NAG for example we use DTD extensively, but if I want a namespace aware grammar language I'd use Relax NG every time rather than a DTD syntax with a collection of processing instructions giving namespace bindings.&lt;/p&gt; &lt;/dd&gt; &lt;dt style="margin-top:0.5em; font-weight: bold"&gt;10: Validation Management&lt;/dt&gt; &lt;dd&gt; &lt;p&gt;This part appears to be on hold, with no public draft.&lt;/p&gt; &lt;/dd&gt; &lt;/dl&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1792065112523450480?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1792065112523450480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1792065112523450480' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1792065112523450480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1792065112523450480'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/10/dsdl-initial-thoughts.html' title='DSDL: initial thoughts'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-6300053428641029584</id><published>2008-10-15T23:04:00.002+01:00</published><updated>2008-10-15T23:21:59.317+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML 1.0  Fifth Edition</title><content type='html'>&lt;p&gt;The W3C is about to publish &lt;a href="http://www.w3.org/TR/2008/PER-xml-20080205/"&gt;XML 1.0 5th edition&lt;/a&gt;, that is assuming that &lt;a href="http://lists.w3.org/Archives/Public/xml-editor/2008OctDec/0005.html"&gt;my (and others') objections&lt;/a&gt; are overruled.&lt;/p&gt; &lt;p&gt;This sets a really terrible precedence, and sadly puts XML into a similar state as HTML, where the specification will be widely ignored (as it will be inconsistent) and people will have no choice other than just to test against a collection of major implementations and do whatever they do. The position for HTML is so bad that the editor for HTML 5 is on record as saying that the HTML 4 specification is essentially irrelevant to HTML5, and HTML5 is instead based on a formalisation of existing implementation behaviour. XML was intended to move markup languages away from such "tag soup" and base everything on a well specified foundation.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.w3.org/TR/xml11"&gt;XML 1.1&lt;/a&gt; changed the rules for XML names (in a good way) allowing a very much more open set of characters to be used in XML names. However XML 1.1 has not had wide take-up, and so the XML core WG has decided to use subterfuge of changing the XML Recommendation &lt;em&gt; in place&lt;/em&gt; by introducing a fake errata that changes the Name production.&lt;/p&gt; &lt;p&gt;There is an attempt &lt;a href="http://lists.w3.org/Archives/Public/public-xml-core-wg/2008Oct/0002.html"&gt; to trivialise&lt;/a&gt; my and similar objections as &lt;em&gt;process&lt;/em&gt; objections. Clearly it is a gross abuse of process but that is not the main point of the objection. It is a technical issue. 5th edition places every specification that refers to XML into a completely unspecified status. Do the features of the language use the original XML 1.0 production or the incompatible one in the 5th edition? &lt;a href="http://lists.w3.org/Archives/Public/xml-editor/2008OctDec/0009.html"&gt;I asked for a simple yes/no&lt;/a&gt; answer to the question of whether it would be conformant to use the new characters in xpath. It is clear from the &lt;a href="http://lists.w3.org/Archives/Public/xml-editor/2008OctDec/0010.html"&gt;reply&lt;/a&gt; that even members of the XML Core (and W3C TAG) groups can not say definitively whether a single xpath  step using such a character is conformant or not. If Henry Thompson can't answer this, how can anyone expect a normal developer to know the answer? The issue is not restricted to XPath, the same lack of clarity surrounds simple questions as to whether IDs using such a character are valid in SVG, or DocBook, or any other language you care to name.&lt;/p&gt; &lt;p&gt;No doubt the development community will recover and make things work, but as I said above users will have to go by what the implementors do, they will no longer be able to go by the specifications, which is a shame, that might yet have bad consequences.&lt;/p&gt; &lt;p&gt;At the very least the TAG ought to update &lt;a href="http://www.w3.org/2001/tag/doc/versioning-xml"&gt;its finding on versioning strategies&lt;/a&gt; to explain how, if a user community shows some resistance to using a new version, a useful approach is to remove choice by making incompatible changes in place, but without changing either the major or minor version number.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-6300053428641029584?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/6300053428641029584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=6300053428641029584' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6300053428641029584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6300053428641029584'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/10/xml-10-fifth-edition.html' title='XML 1.0  Fifth Edition'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8979366495909152317</id><published>2008-07-30T13:40:00.003+01:00</published><updated>2008-07-30T13:50:27.716+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='anniversary'/><title type='text'>25</title><content type='html'>&lt;p&gt;As a rule, this blog restricts to technical items, but rules are meant to be broken...&lt;/p&gt;&lt;p&gt;Joanna and I got married 25 years ago today.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8979366495909152317?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8979366495909152317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8979366495909152317' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8979366495909152317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8979366495909152317'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/07/25.html' title='25'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-4016624515674486962</id><published>2008-05-14T10:57:00.004+01:00</published><updated>2008-05-21T09:56:02.989+01:00</updated><title type='text'>XSLT in the browser</title><content type='html'>&lt;p&gt;XSLT in the browser, its original motivating use case, has had a somewhat difficult time, but with support finally appearing in Opera and Safari, and the support in IE and Firefox/mozilla being fairly stable it looked like perhaps its time had come (even if stuck in an XSLT 1 era).&lt;/p&gt;&lt;p&gt;But then came Firefox 3 beta 5.....&lt;/p&gt;&lt;p&gt;Firefox has decided that relative links that traverse the filesystem out of the current directory are a security error. They are (pretty confusingly) reported as XML parse error rather than a security error.&lt;/p&gt;&lt;p&gt;&lt;a href="https://bugzilla.mozilla.org/show_bug.cgi?id=427333"&gt;https://bugzilla.mozilla.org/show_bug.cgi?id=427333&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This is pretty fatal to browsing XML files on the filesystem, at NAG for instance, the documentation is distributed as a directory tree of a few thousand XML files, at the top level is a styles directory and so the individual files have xml-stylesheet links linking to ../../styles/foo.xsl or whatever is needed. This works in all browsers that support XSLT at all, except firefox 3 beta 5. Where apparently the only solution is to change the link to href="foo.xsl" and then copy the stylesheet into dozens of directories. Blurgh....&lt;/p&gt;&lt;p&gt;I hope bug 427333 gets fixed before FF3 gets out of beta....&lt;/p&gt;&lt;p&gt;&lt;i&gt;Update: ../ stylesheets work again in FF3 release candidate 1, yipee!&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-4016624515674486962?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/4016624515674486962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=4016624515674486962' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4016624515674486962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4016624515674486962'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/05/xslt-in-browser.html' title='XSLT in the browser'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-923846011230264561</id><published>2008-04-09T23:15:00.003+01:00</published><updated>2008-04-09T23:20:24.992+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>MathML3 Draft</title><content type='html'>&lt;p&gt;The W3C Math WG has just published a new working draft of MathML3&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/2008/WD-MathML3-20080409/"&gt;http://www.w3.org/TR/2008/WD-MathML3-20080409&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As always, comments are welcome on the &lt;a href="mailto:www-math@w3.org"&gt;www-math@w3.org&lt;/a&gt; mailing list&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-923846011230264561?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/923846011230264561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=923846011230264561' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/923846011230264561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/923846011230264561'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/04/mathml3-draft.html' title='MathML3 Draft'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-137442968532683047</id><published>2008-01-10T23:20:00.000Z</published><updated>2008-01-18T10:42:06.843Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAG'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>XML position at NAG</title><content type='html'>&lt;p&gt;NAG is recruiting again.&lt;/p&gt;&lt;p&gt;There are &lt;a href="http://www.nag.co.uk/about/careers.asp"&gt;several positions available&lt;/a&gt;, including one in my group, "XML Technologies".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-137442968532683047?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/137442968532683047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=137442968532683047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/137442968532683047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/137442968532683047'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2008/01/xml-position-at-nag.html' title='XML position at NAG'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7028191373174495422</id><published>2007-12-14T17:12:00.000Z</published><updated>2007-12-14T17:35:08.316Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>Three new W3C Working Drafts</title><content type='html'>&lt;p&gt;Today the W3C published three new working drafts&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/MathML3/"&gt;MathML3&lt;/a&gt; Several new features worked on this time, more Content MathML improvements, more information on layouts for elementary mathematics (long division, etc.), and the first draft of a Relax NG Schema. Also, we have re-instated the &lt;a href="http://www.w3.org/TR/MathML3/overview.xml"&gt;XHTML+MathML&lt;/a&gt; version of the spec.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/mathml-for-css/"&gt;A MathML for CSS profile&lt;/a&gt; I'm down as co-editor of this, but all the main credit should go to George Chavchanidze of Opera Software, who's continuing his long standing work of getting mathematical rendering using pure CSS declarations.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.w3.org/TR/xml-entity-names/"&gt;XML Entity definitions for Characters&lt;/a&gt; The latest iteration of the the definitions of Characters. This was formerly part of the MathML spec (Chapter 6) but had been separated out and extended to include all the ISO entity sets, and the HTML Entity sets. I still hope that eventually this can be a joint ISO/W3C publication, updating ISO/IEC TR 9773-13. We'll see...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7028191373174495422?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7028191373174495422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7028191373174495422' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7028191373174495422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7028191373174495422'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/12/three-new-w3c-working-drafts.html' title='Three new W3C Working Drafts'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7119401876281798941</id><published>2007-12-02T11:36:00.000Z</published><updated>2008-12-09T05:54:18.595Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office-2007'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>Mathematics in PowerPoint 2007</title><content type='html'>&lt;p&gt;I've never used PowerPoint, but I've been investigating recently the mathematical and in particular MathML capabilities of the Office 2007 suite.&lt;/p&gt;&lt;p&gt;It's been noted in &lt;a href ="http://blogs.msdn.com/murrays/archive/2007/06/13/getting-word-2007-technical-files-into-publisher-pipelines.aspx"&gt;several  places&lt;/a&gt; that PowerPoint doesn't support the new Word 2007 math zones and that if you cut and paste a math expression from Word to PowerPoint, the result is an image, which means you can't edit it or search on it in that form, and it looks horrible on screen, especially if you have background colour or textures applied to your slides.&lt;/p&gt;&lt;p&gt;This note is just to mention a mechanism of getting correctly rendered editable mathematical text into PowerPoint, in a form which has the full oomml XML markup in the pptx file, so you can extract that and convert to MathML if needed using the Microsoft supplied stylesheet. I suspect that this mechanism is (or ought to be) well known by anyone (not me!) who's used PowerPoint, but a google search didn't show up anyone else mentioning it in this context, so I thought I'd post...&lt;/p&gt;&lt;p&gt;To get a math expression inserted, &lt;b&gt;don't&lt;/b&gt; cut and paste a math zone from word, in Powerpoint choose&lt;br&gt; insert / Object /MicroSoft Word Document&lt;br&gt; then make a 'document' consisting of the equation you need using the embedded copy of Word. the resulting equation will be saved as an embedded object, and if you unzip the pptx PowerPoint file you will find a docx version of the embedded object in the embeddings directory, which you can further unzip to locate the oomml math XML.&lt;/p&gt;&lt;p&gt;The resulting equation renders as &lt;em&gt;text&lt;/em&gt; rather than an &lt;em&gt;image&lt;/em&gt; and may be edited at any time later, just click on it and you get thrown into a copy of Word.&lt;/p&gt;&lt;p&gt;Screen shot with one of Word's example equations rendered twice in a PowerPoint slide, once as an embedded object and once as an image.&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_atYtnL7KtBk/R1KdDWjNm-I/AAAAAAAAAHA/uypyScyyQoM/s1600-R/pptx2007.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_atYtnL7KtBk/R1KdDWjNm-I/AAAAAAAAAHA/dW_VnXQBA3w/s320/pptx2007.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5139342805701598178" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7119401876281798941?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7119401876281798941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7119401876281798941' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7119401876281798941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7119401876281798941'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/12/mathematics-in-powerpoint-2007.html' title='Mathematics in PowerPoint 2007'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_atYtnL7KtBk/R1KdDWjNm-I/AAAAAAAAAHA/dW_VnXQBA3w/s72-c/pptx2007.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7129163696225597363</id><published>2007-11-29T21:44:00.000Z</published><updated>2007-11-29T22:24:11.235Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='STIX'/><category scheme='http://www.blogger.com/atom/ns#' term='Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='htmlparse'/><title type='text'>XML Entity definitions  for Characters</title><content type='html'>&lt;p&gt;In many contexts people find it convenient to enter characters that are not on the keyboard as entity references, such as &amp;amp;rightarrow; to get an arrow rather than remembering what keyboard shortcut or numeric reference (&amp;amp;#x2192;) would produce this. In many cases, life would be simpler if people did not do this: having entity references means that not only do you need a &amp;lt;!DOCTYPE declaration to reference a DTD that defines the entities, you need your XML parser to read the DTD, and it makes processing fragments of XML much harder, as either the fragments do not have a &amp;lt;!DOCTYPE  (in which case they are not, themselves, well formed) and the fragment pasting operation needs to ensure that a suitable DTD reference is placed on the target document, or the fragments do have a doctype, and the fragment pasting needs to strip this off, and still ensure that the target document has a compatible DTD.&lt;/p&gt;&lt;p&gt;If fragments are being moved from one place to another this can be difficult. Consider moving a fragent of MathML from an XHTML document to Docbook for example. XHTML and Docbook define entities with in several case the same name but different definition (the original ISO definitions of the entity names did not give definitions in terms of Unicode characters) and older versions of Unicode did not have sufficient technical symbols to give sensible definitions for most of these names.&lt;/p&gt;&lt;p&gt;All of which preamble is just leading up to say &lt;b&gt;&lt;a href="http://www.unicode.org/versions/beta.html"&gt;Unicode 5.1 (Beta)&lt;/a&gt; does have suitable characters for all the ISO and MathML entities.&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The Entity draft at &lt;a href="http://www.w3.org/2003/entities/"&gt;http://www.w3.org/2003/entities&lt;/a&gt; has thus been updated to a new "2007" version, which we (the W3C Math WG) hope to submit to W3C as a new Recommendation track document shortly,  but you can view my &lt;a href="http://www.w3.org/2003/entities/2007doc/"&gt;Editor's Draft here&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="ttp://www.w3.org/TR/MathML3"&gt;MathML3&lt;/a&gt; will hopefully use these by reference, if (X)HTML (and possibly other non-W3C systems such as Docbook) could do the same, then hopefully we would finally have a set of entity names with widespread consistent use across multiple languages. Hopefully.&lt;/p&gt;&lt;p&gt;Over the years I've been maintaining these sets we've kept fairly regular contact with the &lt;a href="http://www.stixfonts.org/"&gt;STIX group&lt;/a&gt; and the tables of characters in the above document include characters typeset with the STIX Fonts (if you have them installed, and they work in your browser. (The plane 1 characters &lt;a href="http://dpcarlisle.blogspot.com/2007/11/more-stix-experiments.html"&gt;still fail for me&lt;/a&gt; in all browsers on windows).&lt;/p&gt;&lt;p&gt;Comments are welcome, either in this blog, or better on &lt;a href="mailto:www-math@w3.org"&gt;www-math@w3.org&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7129163696225597363?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7129163696225597363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7129163696225597363' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7129163696225597363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7129163696225597363'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/11/xml-entities-definitions-for-characters.html' title='XML Entity definitions  for Characters'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-5829889789671077576</id><published>2007-11-27T22:05:00.000Z</published><updated>2008-12-09T05:54:19.008Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='STIX'/><title type='text'>More STIX Experiments</title><content type='html'>&lt;p&gt;Having posted a small test file to the stix comment page , I noticed that the stix site has a larger test file (choose "STIX Font Glyph Tables" from the menu options on the STIX site, which will take you to&lt;br&gt;&lt;a href="http://www.stixfonts.org/allGlyphs.html"&gt;http://www.stixfonts.org/allGlyphs.html&lt;/a&gt;.&lt;/p&gt;&lt;p&gt; This differs from my test (apart from being rather larger) in that each cell is individually assigned an appropriate font with separate CSS classes rather than having a single CSS font list and relying on the font choice to fall through fonts that do not have the appropriate glyph. The results are different but still a bit disappointing.&lt;/p&gt;Three images of my Windows XP setup, one of the Font directory just to show they are there, one of the top of the allGlyphs file showing side by side in Firefox 2.0.0.9, Opera 9.21 and IE 7.0.5730.11, note that only FF actually shows the bold and italic variants. then the same three browsers showing the bottom of the file. here FF is all white, Opera is white for some characters and &lt;em&gt;two&lt;/em&gt; missing glyph markers for others, and IE is mainly white but strangely enough actually renders the last few entries, which are monospace digits.&lt;/p&gt;&lt;p&gt;The images link to larger screen dumps which show (or rather do not show) the glyphs more clearly.&lt;/p&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_atYtnL7KtBk/R0yY2G550VI/AAAAAAAAAGo/4lcNSlWDPcM/s1600-h/stix3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_atYtnL7KtBk/R0yY2G550VI/AAAAAAAAAGo/4lcNSlWDPcM/s320/stix3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5137649330256728402" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_atYtnL7KtBk/R0yY3m550WI/AAAAAAAAAGw/OUQoxY0nl_M/s1600-h/stix1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_atYtnL7KtBk/R0yY3m550WI/AAAAAAAAAGw/OUQoxY0nl_M/s320/stix1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5137649356026532194" /&gt;&lt;/a&gt;

&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_atYtnL7KtBk/R0yY5G550XI/AAAAAAAAAG4/edTsC7fDeIg/s1600-h/stix2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_atYtnL7KtBk/R0yY5G550XI/AAAAAAAAAG4/edTsC7fDeIg/s320/stix2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5137649381796335986" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-5829889789671077576?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/5829889789671077576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=5829889789671077576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5829889789671077576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5829889789671077576'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/11/more-stix-experiments.html' title='More STIX Experiments'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_atYtnL7KtBk/R0yY2G550VI/AAAAAAAAAGo/4lcNSlWDPcM/s72-c/stix3.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-137111572868898093</id><published>2007-11-19T15:05:00.000Z</published><updated>2007-11-19T15:12:18.840Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='Opera'/><title type='text'>Opera joins the party</title><content type='html'>&lt;p&gt;&lt;a href="http://my.opera.com/desktopteam/blog/2007/11/16/even-more-work"&gt;http://my.opera.com/desktopteam/blog/2007/11/16/even-more-work&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;em&gt;In this build, we added MathML support out of the box&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-137111572868898093?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/137111572868898093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=137111572868898093' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/137111572868898093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/137111572868898093'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/11/opera-joins-party.html' title='Opera joins the party'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-3408029118424789812</id><published>2007-11-07T16:43:00.000Z</published><updated>2007-11-27T22:07:12.701Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='STIX'/><title type='text'>Stix fonts: Initial comments</title><content type='html'>&lt;p&gt;After a wait of many years the STIX fonts have finally been released as public beta! These offer the promise of much better, more portable support for scientific documents on the web and elsewhere. The STIX fonts provide a uniform set of fonts that provide the glyphs for almost all the mathematical characters that have been added to unicode in recent years.&lt;/p&gt;&lt;p&gt;Initial testing suggests there may still be some problems with plane 1 characters (I just submitted the following comment to the stix beta test comment form...&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I tested browser support (windows XP: Firefox, IE 7, Opera) with similar results in all three browsers. The quadruple integral displayed in all three browsers. The plane 1 alphabetic character did not display at all, FF displays 2 missing glyph boxes, IE shows 1 missing glyph box, and opera just shows white space..&lt;/p&gt;&lt;p&gt;I am not able to tell at this stage whether this is user error (I have not specified a sufficiently large set of the STIX fonts in CSS ?) or if this is due to lack of plane 1 support in the browsers, or if there is a problem with the unicode tables in the stix fonts, so I supply the small test file below, which I expect to render as as &lt;/p&gt;&lt;p&gt;QUADRUPLE INTEGRAL OPERATOR&lt;/p&gt;&lt;p&gt;MATHEMATICAL BOLD CAPITAL A&lt;/p&gt;
&lt;pre&gt;
&amp;lt;html&gt;
&amp;lt;head&gt;
&amp;lt;title&gt;stix&amp;lt;/title&gt;
&amp;lt;style&gt;
p {
font-family: STIXGeneral, STIXGeneral-Italic, STIXGeneral-Bold, STIXGeneral-BoldItalic;
}
&amp;lt;/style&gt;
&amp;lt;/head&gt;
&amp;lt;body&gt;
&amp;lt;p&gt;x2a0c &amp;amp;#x2a0c;&amp;lt;/p&gt;
&amp;lt;p&gt;x1d400 &amp;amp;#x1d400;&amp;lt;/p&gt;
&amp;lt;/body&gt;
&amp;lt;/html&gt;
&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-3408029118424789812?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/3408029118424789812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=3408029118424789812' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/3408029118424789812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/3408029118424789812'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/11/stix-fonts-initial-comments.html' title='Stix fonts: Initial comments'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-5968954304733694527</id><published>2007-10-05T22:23:00.000+01:00</published><updated>2007-10-05T22:27:34.918+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>New MathML Draft</title><content type='html'>The W3C just published the &lt;a href="http://www.w3.org/TR/2007/WD-MathML3-20071005/"&gt;latest draft of MathML 3&lt;/a&gt;.

As ever, comments welcome on www-math@w3.org mailing list.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-5968954304733694527?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.w3.org/TR/2007/WD-MathML3-20071005/' title='New MathML Draft'/><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/5968954304733694527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=5968954304733694527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5968954304733694527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/5968954304733694527'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/10/new-mathml-draft.html' title='New MathML Draft'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-1139298636192985881</id><published>2007-06-12T14:15:00.000+01:00</published><updated>2007-06-12T14:35:28.809+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAG'/><category scheme='http://www.blogger.com/atom/ns#' term='Job'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>XML position at NAG</title><content type='html'>NAG is &lt;a href="http://www.nag.co.uk/about/XMLEng.asp"&gt;looking for someone to work in the XML Technologies Group&lt;/a&gt;, that is, "my" group. So if you are interested, please contact the address specified in the above posting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-1139298636192985881?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/1139298636192985881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=1139298636192985881' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1139298636192985881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/1139298636192985881'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/06/xml-position-at-nag.html' title='XML position at NAG'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-499289429332157908</id><published>2007-06-05T23:06:00.000+01:00</published><updated>2007-06-06T13:01:55.954+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NAG'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>The Big Switch</title><content type='html'>&lt;p&gt;There was a thread a while ago on xsl-list discussing when was a good time to switch from XSLT1 to XSLT2. The consensus seemed to be, "it depends...."&lt;/p&gt;&lt;p&gt;For &lt;a href="http://www.nag.co.uk"&gt;NAG&lt;/a&gt;, the answer is NOW!&lt;/p&gt;&lt;p&gt;After a lot of regression testing, staring at diff files and crossing of fingers, we just switched the processor for our main stylesheets over from saxon 6 to saxon 8.&lt;/p&gt;&lt;p&gt;This is quite a large (set of) stylesheets (around 26K lines of XSLT) so is quite a substantial test of XSLT2's compatibility with XSLT1. The results were pretty good, although it's not exactly surprising as an earlier version of these stylesheets were used to &lt;a href="http://lists.w3.org/Archives/Public/public-qt-comments/2004Feb/0856.html"&gt;request improvements&lt;/a&gt; to backward compatibility mode as defined in an earlier draft, all the main changes requested in that report were made.&lt;/p&gt;&lt;p&gt;We are taking a multi-stage process to switching to version 2:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Import an XSLT2 stylesheet that defines a few extension functions in the saxon 6 extension namespace using xsl:function and standard function calls. saxon:node-set defined as identity function, saxon:tokenize defined using XPath2 tokenize, saxon:distinct defined using XPath2 distinct-values etc.&lt;/li&gt;&lt;li&gt;Process the stylesheets with saxon 8 over the NAG Library documentation for &lt;a href="http://www.nag.co.uk/numeric/FL/FLdocumentation.asp"&gt;Fortran&lt;/a&gt; and &lt;a href="http://www.nag.co.uk/numeric/CL/CLdocumentation.asp"&gt;C&lt;/a&gt; and check the results were the same.&lt;/li&gt;&lt;li&gt;The only significant difference was due not so much to a change of language but to the change of processor. Saxon has changed its default ordering for xsl:sort. As documented, adding lang="en" reverted the behaviour.&lt;/li&gt;&lt;li&gt;Start using XSLT2 features in the stylesheet, and start removing the existing calls to saxon6 extension functions. &lt;em&gt;(This is where we are now.)&lt;/em&gt; This will eventually remove the need for the functions defined in step 1.&lt;/li&gt;&lt;li&gt;&lt;em&gt;(Some time soon.)&lt;/em&gt; Change the specified version on the stylesheets from 1.0 to 2.0. This will turn off BC mode and will require another round of regression testing. As noted in the old email above, the stylesheets often pass parameters to named templates that do not define those parameters, which will become an error. this will be easy to find as the error is fatal and so you just fix them. Harder will be finding all the places where XSLT1's implicit "first node in document order" semantics have been used. Fortunately in our case we have a large, but relatively stable document collection to process, so it's feasible to make this change and then run automated comparisons over the results of processing the entire collection in the two modes.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This is far from being the first use of XSLT2 at NAG, but it's the first time we've &lt;em&gt;switched&lt;/em&gt; a stylesheet collection from version 1 to version 2, so far things have gone pretty smoothly... &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-499289429332157908?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/499289429332157908/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=499289429332157908' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/499289429332157908'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/499289429332157908'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/06/big-switch.html' title='The Big Switch'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8387111260556284225</id><published>2007-05-29T22:43:00.003+01:00</published><updated>2009-12-18T20:25:17.002Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='googlecode'/><category scheme='http://www.blogger.com/atom/ns#' term='nodeset'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>The EXSLT node-set  function</title><content type='html'>&lt;p&gt;Following on from a &lt;a href="http://www.biglist.com/lists/xsl-list/archives/200705/msg00769.html"&gt;thread on xsl-list&lt;/a&gt; which turned to the question of support for the useful xx:node-set() extension function in the XSLT engines used by popular browsers.&lt;/p&gt;
&lt;p&gt;Using XPath extension functions in a cross-browser environment is greatly simplified if all the XSLT engines use the same extension namespace. This was one of the motivating reasons behind the community initiative to standardise on the &lt;a href="http://www.exslt.org"&gt;EXSLT&lt;/a&gt; extension namespaces.&lt;/p&gt;
&lt;p&gt;Opera's XSLT engine supports exslt:node-set, Mozilla/Firefox's XSLT engine doesn't in the current release, but does in the "Gran Paradiso" alpha tests for Firefox 3. Internet Explorer (6 and 7) don't support EXSLT, but do support the functionally identical msxsl:node-set function in the usual msxsl extension namespace.&lt;/p&gt;
&lt;p&gt;The usual way to handle exslt:node-set and msxsl:node-set in the same document is to use xsl:choose blocks, with tests on function-available('exslt:node-set') but that is often inconvenient if you want to use xx:node-set in the middle of an XPath.&lt;/p&gt;
&lt;p&gt;In the above XSL-List thread I casually suggested that an alternative would be to just always use exslt:node-set in the body of the stylesheet and use the msxsl:script extension to define exslt:node-set for IE. That turned out not to be as easy as I thought as node-set isn't a valid function name in either of the supported extension languages in msxsl (JScript or VBScript). However Julian Reschke came up with the construct needed, use associative array syntax so you can use ['node-set']
to define the function. A complete stylesheet using this technique is shown below&lt;/p&gt;
&lt;pre&gt;
&amp;lt;xsl:stylesheet
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:exslt="http://exslt.org/common"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  exclude-result-prefixes="exslt msxsl"&gt;
  

&amp;lt;msxsl:script language="JScript" implements-prefix="exslt"&gt;
 this['node-set'] =  function (x) {
  return x;
  }
&amp;lt;/msxsl:script&gt;


&amp;lt;xsl:variable name="x"&gt;
  &amp;lt;y/&gt;
&amp;lt;/xsl:variable&gt;

&amp;lt;xsl:template match="x"&gt;
  &amp;lt;html&gt;
    &amp;lt;head&gt;&amp;lt;title&gt;test exslt node set&amp;lt;/title&gt;&amp;lt;/head&gt;
    &amp;lt;body&gt;
      &amp;lt;xsl:apply-templates select="exslt:node-set($x)/*"/&gt;
    &amp;lt;/body&gt;
  &amp;lt;/html&gt;
&amp;lt;/xsl:template&gt;

&amp;lt;xsl:template match="y"&gt;
  &amp;lt;p&gt;node set!&amp;lt;/p&gt;
&amp;lt;/xsl:template&gt;

&amp;lt;/xsl:stylesheet&gt;
&lt;/pre&gt;
&lt;p&gt;The same stylesheet &lt;a href="http://web-xslt.googlecode.com/svn/trunk/node-set/nss.xsl"&gt;is online&lt;/a&gt; together with a  &lt;a href="http://web-xslt.googlecode.com/svn/trunk/node-set/ns.xml"&gt;test file&lt;/a&gt; which just consists of a stylesheet reference and an empty element &amp;lt;x/&gt;.&lt;/p&gt;
&lt;p&gt;If your browser supports EXSLT (either natively or using the technique above) viewing the  &lt;a href="http://web-xslt.googlecode.com/svn/trunk/node-set/ns.xml"&gt;test file&lt;/a&gt; link should show "node set!". This appears to work in Firefox Gran paradiso, Internet Explorer 7, Opera 9.21. It doesn't work in Firefox 2 (you get an error message about an unsupported extension function).  Users of other browsers that support XSLT (Safari?) feel free to report any results in the comments!&lt;/p&gt;&lt;p&gt;&lt;i&gt;Updated 2008-08-06 to move test file to a different server.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;Updated 2009-12-17 to move to google code server. The file now reports that Safari 3.2 supports node-set&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8387111260556284225?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8387111260556284225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8387111260556284225' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8387111260556284225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8387111260556284225'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/05/exslt-node-set-function.html' title='The EXSLT node-set  function'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8428210203965268674</id><published>2007-05-09T02:22:00.000+01:00</published><updated>2007-05-09T22:39:28.219+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='schematron'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>schematron updates</title><content type='html'>Ken Holman &lt;a href="http://eccnet.eccnet.com/pipermail/schematron-love-in/2007-May/000686.html"&gt;posted a problem&lt;/a&gt; with the skeleton which also applied to my version described in &lt;a href="http://dpcarlisle.blogspot.com/2007/04/schematron-experiments.html"&gt;an earlier post&lt;/a&gt; so I updated the code, at &lt;a href="http://www.dcarlisle.demon.co.uk/schematron/dpc_schematron_skeleton.xsl"&gt;the same URI&lt;/a&gt;. There have also been some updates in the last few days removing saxon dependencies, as described in the coments, thanks to &lt;a href="http://colina.demon.co.uk/?q=node/10"&gt;Colin Adams&lt;/a&gt; for picking those up.

[updated again 2007/05/09]

A couple of errors had crept into the schematron-get-full-path mode used to display the XPath of the current node.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8428210203965268674?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8428210203965268674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8428210203965268674' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8428210203965268674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8428210203965268674'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/05/schematron-updates.html' title='schematron updates'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-3373465381494017650</id><published>2007-04-29T23:16:00.000+01:00</published><updated>2007-04-30T11:04:18.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenOffice.org'/><category scheme='http://www.blogger.com/atom/ns#' term='Office-2007'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>XHTML and MathML from OpenOffice.org 2.2</title><content type='html'>&lt;p&gt;In the comments on  &lt;a href="http://blogs.msdn.com/murrays/archive/2007/04/15/creating-math-web-documents-using-word-2007.aspx"&gt;Murray's blog&lt;/a&gt; I commented that (given a fixed stylesheet that does the conversion) the workflow to extract MathML from an XML file that contains MathML, and one that contains some XML transformable to MathML is pretty much the same.&lt;/p&gt;&lt;p&gt;This was in reply to a comment that Science (and it turns out, Nature) don't accept Office 2007 native format, partly at least due to a perceived lack of MathML support.&lt;/p&gt;&lt;p&gt;So, I thought I'd repeat my &lt;a href="http://dpcarlisle.blogspot.com/2007/04/xhtml-and-mathml-from-office-20007.html"&gt;recent experiment&lt;/a&gt; Using OpenOffice.org rather than MS Office 2007.&lt;/p&gt;&lt;p&gt;I took the test1.docx file used as the test file in the earlier post, saved it (using Office 2007) as .doc (which warned me that the mathematics would get turned into pictures) and then imported it into OpenOffice.org, regenerated the mathematics using the formula editor provided, deleting the Word generated images, and saved as .odt. Now the aim of the game is to get an XHTML+MathML document, starting from here...&lt;/p&gt;&lt;dl&gt;
&lt;dt&gt;Step 1&lt;/dt&gt;&lt;dd&gt;Save as html. This produces a passable approximation to HTML (not valid but not quite so fanciful as the output from MS Word). The Mathematics is all images, and unlike Word there is no comment or other markup (not even an alt attribute) to give an alternative format. However there is a name attribute which gives the original object name, so we can retrieve the MathML from the .odt file.&lt;/dd&gt;&lt;dt&gt;Step 2&lt;/dt&gt;&lt;dd&gt;Unzip the odt file.&lt;/dd&gt;&lt;dt&gt;Step 3&lt;/dt&gt;&lt;dd&gt;Add an (empty) file math.dtd to several subdirectories extracted from the zip file, to make the content.xml files containing MathML well formed. (A catalogue would be a more sensible alternative to supplying multiple copies of the dtd).&lt;/dd&gt;&lt;dt&gt;Step 4&lt;/dt&gt;&lt;dd&gt;Run a small stylesheet that imports htmlparse.xsl to convert the HTML to XHTML, replaces the math images by their matching MathML fragments, and does a bit more cleanup on the xhtml to make it valid.&lt;/dd&gt;&lt;dt&gt;Step 5&lt;/dt&gt;&lt;dd&gt;There is no step 5:-)&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;The stylesheet in step 4 looks like this:&lt;/p&gt;&lt;pre&gt;&amp;lt;xsl:stylesheet 
    version="2.0"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:d="data:,dpc"&gt; 
  &amp;lt;xsl:import href="../htmlparse/htmlparse.xsl"/&gt;
  &amp;lt;xsl:template name="main"&gt;
    &amp;lt;xsl:processing-instruction name="xml-stylesheet"
     &gt;type="text/xsl" href="pmathml.xsl"&amp;lt;/xsl:processing-instruction&gt;
    &amp;lt;xsl:apply-templates select="d:htmlparse(
     unparsed-text('test1oo.html','windows-1252'))"/&gt;

  &amp;lt;/xsl:template&gt;
  &amp;lt;xsl:template match="@*|node()"&gt;
    &amp;lt;xsl:copy&gt;
      &amp;lt;xsl:apply-templates select="@*|node()"/&gt;
    &amp;lt;/xsl:copy&gt;
  &amp;lt;/xsl:template&gt;

  &amp;lt;xsl:template match="@align|@valign|@dir|@frame|@rules"&gt;
    &amp;lt;xsl:attribute name="{name()}" select="lower-case(.)"/&gt;
  &amp;lt;/xsl:template&gt;

  &amp;lt;xsl:template match="h:img[starts-with(@name,'Object')]"&gt;
    &amp;lt;xsl:copy-of select="doc(concat('odt-unzip/Object ',
                             substring-after(@name,'Object'),
                             '/content.xml'))"/&gt;
  &amp;lt;/xsl:template&gt;
&amp;lt;/xsl:stylesheet&gt;&lt;/pre&gt;&lt;p&gt;The result of the transformation &lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/test1-oo.xml"&gt;looks like this&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Comparing the stylesheet here with the one in &lt;a href="http://dpcarlisle.blogspot.com/2007/04/htmlparse-updated.html"&gt;the earlier post&lt;/a&gt; you'll see that the complexity in either case is about the same. Word writes all the information into a single file (as comments) which can be a bit more convenient, but OpenOffice.org places the MathML directly in the zip file which may also have advantages. Word's HTML output takes a lot more cleaning up to be valid HTML (or XHTML) but there are tools around that do that, more or less.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.robweir.com/blog/2007/04/math-markup-marked-down.html"&gt;Rob Weir&lt;/a&gt; has a recent blog entry picking up on the MathML support as a reason to go with ODF. I don't buy the argument, to be honest. It's not surprising that publications are not set up to accept the zipped xml formats from any of these systems. Publisher's in house document processes are ususally somewhat complicated and fine tuned. Tooling up to accept any new format will take them time. There are plenty of reasons to argue over which format is better in any given situation, but a general statement that storing MathML is good, and storing something transformable to MathML is bad doesn't really convince me of anything, sorry!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-3373465381494017650?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/3373465381494017650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=3373465381494017650' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/3373465381494017650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/3373465381494017650'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/xhtml-and-mathml-from-openofficeorg-22.html' title='XHTML and MathML from OpenOffice.org 2.2'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-9096323789993272421</id><published>2007-04-27T09:56:00.000+01:00</published><updated>2007-04-27T14:09:24.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><title type='text'>MathML  3 .0 and MathML for CSS</title><content type='html'>Two new working drafts issued today: &lt;a href="http://www.w3.org/TR/MathML3/"&gt;MathML 3.0&lt;/a&gt; and &lt;a href="http://www.w3.org/TR/mathml-for-css/"&gt;A MathML for CSS profile&lt;/a&gt;.

These drafts are the first public working drafts by the current incarnation of the Math Working group.

No doubt I will be posting more about those later, comments of course welcome either here or (better) on the &lt;a href="http://lists.w3.org/Archives/Public/www-math/"&gt;www-math list&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-9096323789993272421?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/9096323789993272421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=9096323789993272421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/9096323789993272421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/9096323789993272421'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/mathml-3-0-and-mathml-for-css.html' title='MathML  3 .0 and MathML for CSS'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-4939778109116112199</id><published>2007-04-23T00:48:00.001+01:00</published><updated>2009-12-18T01:26:33.608Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office-2007'/><category scheme='http://www.blogger.com/atom/ns#' term='XHTML'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='htmlparse'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>htmlparse, updated</title><content type='html'>&lt;p&gt;There are two well known open source tools for cleaning up and fixing HTML to produce XML suitable for further processing, &lt;a href="http://tidy.sourceforge.net/"&gt;tidy&lt;/a&gt; and &lt;a href="http://home.ccil.org/~cowan/XML/tagsoup/"&gt;TagSoup&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Back in 2004 I posted some XSLT code, htmlparse.xsl,  to do a similar job and used it in a few examples on the &lt;a href="http://www.mulberrytech.com/xsl/xsl-list"&gt;xsl-list&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;When I needed such a tool for the &lt;a href="http://dpcarlisle.blogspot.com/2007/04/xhtml-and-mathml-from-office-20007.html"&gt;MathML from Office&lt;/a&gt; post, my first thought was to use the htmlparse stylesheet. Unfortunately the output from Word was too much for the stylesheet, which couldn't cope with the Microsoft conditional declarations.&lt;/p&gt;&lt;p&gt;However it turned out not to be hard to extend the stylesheet, so I have updated &lt;a href="http://web-xslt.googlecode.com/svn/trunk/htmlparse/htmlparse.xsl"&gt;htmlparse.xsl&lt;/a&gt; to fix a couple of bugs in attribute handling, and to extend it to cope with &amp;lt;![if !vml]&gt; and friends. This now gives a pure XSLT route of getting from Word output to XHTML+MathML. Using the same test file as the earlier post, the stylesheet:&lt;/p&gt;&lt;pre&gt;
&amp;lt;xsl:stylesheet 
   version="2.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:d="data:,dpc"&gt; 
  &amp;lt;xsl:import href="../htmlparse/htmlparse.xsl"/&gt;
  &amp;lt;xsl:import href="xhtml-mathml.xsl"/&gt;
  &amp;lt;xsl:template name="main"&gt;
    &amp;lt;xsl:apply-templates select="d:htmlparse(
              replace(
                  unparsed-text('test1.htm','windows-1252'),
                  'http://www.w3.org/TR/REC-html40',
                  'http://www.w3.org/1999/xhtml'))"/&gt;
  /xsl:template&gt;
&amp;lt;/xsl:stylesheet&gt;
&lt;/pre&gt;&lt;p&gt;Produces an &lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/test1-ht.xml"&gt;XHTML+MathML&lt;/a&gt; document as shown.&lt;/p&gt;&lt;p&gt;Although it's used here to convert an entire document, TagSoup, which interfaces to XSLT as a SAX parser, is probably preferable in this context. htmlparse (originally written just as an excercise in XSLT2 regular expressions) is probably more useful for parsing small fragments of html, as often found in query strings or embedded in CDATA in XML files. It has the advantage of being pure XSLT, not requiring any extension functions or non standard parser usage.&lt;/p&gt;&lt;p&gt;&lt;i&gt;2009-12-18 updated location of htmlparse to google code&lt;/i&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-4939778109116112199?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/4939778109116112199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=4939778109116112199' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4939778109116112199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/4939778109116112199'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/htmlparse-updated.html' title='htmlparse, updated'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-719794168234157510</id><published>2007-04-18T23:06:00.001+01:00</published><updated>2007-04-20T01:45:12.868+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>Testing the emacs interface</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;p&gt;Posting from emacs, editing existing post from emacs&lt;/p&gt;
    &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-719794168234157510?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/719794168234157510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=719794168234157510' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/719794168234157510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/719794168234157510'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/testing-emacs-interface.html' title='Testing the emacs interface'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-2589847778200203663</id><published>2007-04-18T01:43:00.000+01:00</published><updated>2007-04-18T02:11:01.147+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><title type='text'>MathML in HTML</title><content type='html'>As mentioned in &lt;a href="/2007/04/testing-interface.html"&gt;an earlier post&lt;/a&gt;, I'm experimenting with Peter Jipsen's script for using MathML in posts served as text/html. The original script  assumed a MathML enabled browser, I've just added some conditional code so that if Gecko or MathPlayer are not detected, some CSS, mainly due to George Chavchanidze, is inserted. It doesn't do all of presentation MathML yet but it renders fractions, msqrt and superscripts enough to make the above post more or less legible in Opera. Things need a bit more tuning yet, I seem to have introduced a noticeable delay before the mathematics is rendered (in all browsers), but progress, I think...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-2589847778200203663?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/2589847778200203663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=2589847778200203663' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2589847778200203663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/2589847778200203663'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/as-mentioned-in-earlier-post-im.html' title='MathML in HTML'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8729973098602606344</id><published>2007-04-14T00:32:00.000+01:00</published><updated>2007-04-17T10:31:16.701+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='schematron'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><title type='text'>Schematron Experiments</title><content type='html'>&lt;p&gt;Rick Jelliffe, acting as editor of &lt;a href="http://www.schematron.com/spec.html"&gt;ISO Schematron&lt;/a&gt; has a call for &lt;a href="http://eccnet.eccnet.com/pipermail/schematron-love-in/2007-April/000604.html"&gt;corrections and improvements&lt;/a&gt; to schematron, and also is working on updating the XSLT skeleton implementation, see &lt;a href="http://eccnet.eccnet.com/pipermail/schematron-love-in/2007-April/000637.html"&gt;this thread&lt;/a&gt; on the schematron-love list. This got me looking at schematron again, after a gap of some years...&lt;/p&gt;&lt;p&gt;The one suggestion that I made for a specification change is to allow schematron contexts to match text nodes. The current situation is very strange, schematron contexts (in XSLT1 or XSLT2 bindings) have (exactly) the syntax of XSLT patterns, but with an extra semantic restriction (not made explicitly in the specification) that any text nodes that are matched are ignored. The reference schematron implementation (current and previous version as far as I have seen) have implemented this    inconsistently, applying schematron rules to text nodes (due to   the fact that the default template for each pattern uses selects   on node(), but not if the parent of the text node is the context   of a schematron rule as then the recursion is via    *|comment()|processing-instruction(). Rick has put this forward as   an official change request to the working group, but seems    unconvinced by the change, we'll see!&lt;/p&gt;   &lt;p&gt;Meanwhile, looking at the code, I've not looked at the   schematron implementation since I made the schematron-report   (which google tells me was back in 1999, doesn't time fly:-) I   think it's changed quite a bit since then, especially to   accommodate the "skeleton" paradigm, but the basics are the   same.&lt;/p&gt; &lt;h3&gt;A trial implementation&lt;/h3&gt;  &lt;p&gt;There's been quite a bit of discussion on the schematron-love   list about implementation changes, and posted code, but a mailing   list isn't always the best place to discuss code samples, so I   thought I'd try posting here.&lt;/p&gt;   &lt;p&gt;Schematron allows you to specify several &lt;em&gt;patterns&lt;/em&gt; and   each rule has a &lt;em&gt;context&lt;/em&gt; at which point several assertions   can be made about XPath expressions. As noted above a context is   more or less identical to an XSLT pattern, and the implementation    of each rule in a pattern is as an XSLT template with a unique   priority and a mode corresponding to the pattern to be used. For  each pattern in the schematron schema, a full recursive tree walk   is made via templates which process a node and then recursively    process attributes and children. There are optimisation flags to    try to speed this up, in particular by omitting attribute    processing, and the specification that text nodes should not be    visited, is partly due to a concern over this processing    speed.&lt;/p&gt;    &lt;p&gt;I argued &lt;a href="http://eccnet.eccnet.com/pipermail/schematron-love-in/2007-April/000642.html"&gt;on the list&lt;/a&gt;    that visiting text nodes were not a serious time concern compared    to other issues, and  certainly not enough to distort the language. But for once I decided to heed Mike Kay's oft cited    advice on &lt;a href="http://www.mulberrytech.com/xsl/xsl-list/"&gt;xsl-list&lt;/a&gt; that    performance questions should be answered by measuring timings.    &lt;/p&gt;    &lt;p id="download"&gt;I have made a &lt;a href="http://www.dcarlisle.demon.co.uk/schematron/dpc_schematron_skeleton.xsl"&gt;modified schematron skeleton implementation&lt;/a&gt;    that takes a number of parameters that control the way that the    schematron patterns are implemented. Also available is a &lt;a href="http://www.dcarlisle.demon.co.uk/schematron/book.xml"&gt;test document&lt;/a&gt; and &lt;a href="http://www.dcarlisle.demon.co.uk/schematron/dpc.sch"&gt;test schema&lt;/a&gt; used in the test below.&lt;/p&gt;  &lt;p&gt;The parameters controlling the generation of the XSLT are described below.&lt;/p&gt;  &lt;dl&gt;   &lt;dt&gt;visit-text&lt;/dt&gt;     &lt;dd&gt;This parameter defaults to 'false' at which setting text     nodes are not visited when establishing the contexts for     schematron patterns. This is the behaviour currently mandated by      the specification. If it is set to 'true' text nodes are visited      which is the behaviour but forward as a suggestion for a future      schematron update. In some cases omitting text nodes is     implemented by selecting *|comment()|processing-instruction()     rather than node() (this does appear to save some time, but in     other cases it is necessary to add a filter [not(self::text())]     to explicitly skip text nodes, in which case not visiting text     nodes may take extra time due to the extra check. Compare the     times for 2 and 3 and  6 and 7 below. In all cases though on this     test file the difference is only around 50ms in 1000, so not     really significant enough to affect the language design.&lt;/dd&gt;     &lt;dt&gt;attributes&lt;/dt&gt;      &lt;dd&gt;Normally if recursing down the tree both the attribute and     child nodes are selected, setting this to 'false' will cause the     attribute to be omitted (the existing iso_schematron_skeleton     has a similar parameter) one difference is that this defaults to     'true' if it is safe to do so (if no context in the schema has     contains '@' or 'attribute').&lt;/dd&gt;     &lt;dt&gt;only-child-elements&lt;/dt&gt;     &lt;dd&gt;Similar to the attributes parameter above, this causes a     test of node() to be changed to * so that just elements are    visited on the child axis. Again this defaults to 'true' if it     is safe to do so (no context contains a '(').&lt;/dd&gt;     &lt;dt&gt;select-contexts&lt;/dt&gt;      &lt;dd&gt;Perhaps the most radical option. Traditionally schematron     has been implemented by a traditional walk over the tree where    each step is accomplished by a template which process a node,    and then recursively applies templates on child nodes and     attributes. However this recursion is tail recursive and so is     effectively an iteration, so an alternative implementation     strategy is to first select all the nodes that need to be     processed, and then process them with a non-recursive template     that process a single node and does not call      apply-templates.&lt;/dd&gt;     &lt;dd&gt;This defaults to '', which enables the classic recursive behaviour.&lt;/dd&gt;    &lt;dd&gt;If set to '//' then a an XPath is constructed from all the     rule contexts in a pattern and used in a single select, so if a      pattern has rules with contexts a b and c a select="//(a|b|c)"      is generated. This method (on this test) leads to the quickest     processor, but the difference over the default behaviour is not      that great, and unfortunately it requires XSLT2 binding to allow      the general step using (). To generate an XPath 1 expression      would require too much parsing of the context than is really      convenient in XSLT.&lt;/dd&gt;      &lt;dd&gt;If set to 'key' the behaviour is similar to the behaviour      with '//' but rather than use an XPath using // an XSLT key is      generated. This has the advantage that it is much easier to     generate legal XSLT1, and my intuition was that this would be      the fastest so long as memory for the key did not get out of      hand. It seems that my intuition here was wildly, spectacularly     &lt;b&gt;wrong&lt;/b&gt;. As can be seen from the timings below, runs 4 and 5,     using this key setting take around 20 times longer.&lt;/dd&gt;   &lt;/dl&gt;   &lt;p&gt;One unrelated and largely cosmetic change, the schematron   implementation needs to generate unique priorities for each    template that it generates. The exact numbers do not matter, just    the relative ordering. The existing ISO implementation counts down    from 4000. the 4000 always bothered me (I don't know why, really)   so I have changed it here to count up from 1000 (keeping the   relative ordering). Strictly speaking, counting down from 4000   isn't safe as if you have 4000 templates the priorities specified   would be less than the priorities specified on default templates   in the same mode, however the real reason is cosmetic. (I was   tempted to count up from 1 and lower the default templates more,   but I stared from 1000, just to give them all 4 digit numbers.&lt;/p&gt; &lt;h3&gt;Results for one test document&lt;/h3&gt;&lt;p&gt;The following script was used, it's a bash script but can just be viewed as a sequence of command line instructions and equivalent code could be used in any operating system&lt;/p&gt; &lt;p&gt;Run 1 uses the current schematron beta skeleton, as a base comparison., runs 2 to 7 uses the modified implementation using various combinations of the parameters described above.&lt;/p&gt; &lt;p&gt;the schematron output (log1.txt ... log7.txt) is checked with the unix diff command: no output here is good, which means that the output is the same in each case. the -3 flag to saxon causes it to run the code three times and report the average time (thus avoiding measuring JVM startup and stylesheet compilation times).&lt;/p&gt;&lt;pre style="border: solid thin; padding: 1em"&gt;
#!/bin/bash

rm temp?.xsl
saxon8 -novw -o temp1.xsl dpc.sch
   iso_schematron_skeleton.xsl
saxon8 -novw -o temp2.xsl dpc.sch
   dpc_schematron_skeleton.xsl
saxon8 -novw -o temp3.xsl dpc.sch
   dpc_schematron_skeleton.xsl visit-text=true
saxon8 -novw -o temp4.xsl dpc.sch
   dpc_schematron_skeleton.xsl select-contexts=key
saxon8 -novw -o temp5.xsl dpc.sch
   dpc_schematron_skeleton.xsl visit-text=true
                               select-contexts=key
saxon8 -novw -o temp6.xsl dpc.sch
   dpc_schematron_skeleton.xsl select-contexts=//
saxon8 -novw -o temp7.xsl dpc.sch
   dpc_schematron_skeleton.xsl visit-text=true
                               select-contexts=//

rm log?.txt logg?.txt
saxon8 -3 -novw -o log1.txt book.xml temp1.xsl 2&gt; logg1.txt
saxon8 -3 -novw -o log2.txt book.xml temp2.xsl 2&gt; logg2.txt
saxon8 -3 -novw -o log3.txt book.xml temp3.xsl 2&gt; logg3.txt
saxon8 -3 -novw -o log4.txt book.xml temp4.xsl 2&gt; logg4.txt
saxon8 -3 -novw -o log5.txt book.xml temp5.xsl 2&gt; logg5.txt
saxon8 -3 -novw -o log6.txt book.xml temp6.xsl 2&gt; logg6.txt
saxon8 -3 -novw -o log7.txt book.xml temp7.xsl 2&gt; logg7.txt

echo diff
diff log1.txt log2.txt
diff log1.txt log3.txt
diff log1.txt log4.txt
diff log1.txt log5.txt
diff log1.txt log6.txt
diff log1.txt log7.txt

echo grep
grep Average logg*txt
&lt;/pre&gt;&lt;p&gt;And the results are:&lt;/p&gt;
&lt;pre style="border: solid thin; padding: 1em"&gt;
diff
grep
logg1.txt:*** Average execution time over 3 runs: 1078ms
logg2.txt:*** Average execution time over 3 runs: 1052ms
logg3.txt:*** Average execution time over 3 runs: 1062ms
logg4.txt:*** Average execution time over 3 runs: 21843ms
logg5.txt:*** Average execution time over 3 runs: 21885ms
logg6.txt:*** Average execution time over 3 runs: 1047ms
logg7.txt:*** Average execution time over 3 runs: 995ms
&lt;/pre&gt;&lt;p&gt;The default behaviour (2) of this script is a little faster than (1), probably because it visits fewer text nodes to more fully implement the current standard, When all text nodes are visited in run (3) it's slightly slower. As noted above (4) and (5) are unusable, unless this turns out to be a bug in either my code or the XSLT processor, this indicates that the 'key' option should be removed from any final release. 6 and 7 using // and not visiting or visiting text nodes turns out to be the fastest here, but probably not sufficiently different to make it worth having this as an option in a final release, unless perhaps other people with real documents who have found the classic recursive method slow report this as faster. (I suspect some documents will be faster, some slower, depending greatly on the documents and the underlying XSLT processor.&lt;/p&gt; &lt;h3&gt;Licence&lt;/h3&gt; &lt;p&gt;Most of the code in the modified skeleton is Copyright Rick Jelliffe, and the code is distributed under the same licence as his implementation of which this is just a minor modification. The comments at the top of the file say:&lt;/p&gt;
&lt;pre style="font-size: 75%"&gt;
&amp;lt;!-- DPC
Modified schematron skeleton code by David Carlisle.
http://dpcarlisle.blogspot.com/search/label/schematron

All modifications are marked with XML comments starting
with " DPC".

The majority of the code is copyright
Rick Jelliffe and Academia Sinica Computing Center
distributed under the license below, see "LEGAL NOTICE".
The modified sections of code are the work of David Carlisle and are
distributed under the same licence. Rick Jelliffe or others are free to
incorporate David Carlisle's code back in to other schematron implementations
which use this licence, for any such incorporation, specific attribution is
not required, although the attribution style used for earlier contribution
is appreciated.

This is a test implementation for discussion on the schematron mailing list
suggesting some possible changes and enhancements for a schematron implementation.
People are welcome to try the code and comment, but for production use you are
strongly advised to use the "unofficial reference" implementation from schematron.org
This is not intended to be a long term "competing" implementation.
--&gt;
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8729973098602606344?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8729973098602606344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8729973098602606344' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8729973098602606344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8729973098602606344'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/schematron-experiments.html' title='Schematron Experiments'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-6636680811935324386</id><published>2007-04-10T02:44:00.001+01:00</published><updated>2007-05-09T01:33:24.790+01:00</updated><title type='text'>XHTML and MathML from Office 2007</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;p&gt;&lt;i&gt;&lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/xhtml-mathml.xsl"&gt;xhtml-mathml stylesheet updated 2007/05/09&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;p&gt;I commented on &lt;a href="http://blogs.msdn.com/murrays/archive/2007/03/16/math-find-replace-and-rich-text-searches.aspx"&gt;Murray's blog&lt;/a&gt; That it ought to be possible to get XHTML/MathML documents out of Word. Having speculated that it ought be possible, conscience dictated that I try to do it. The results are described below.&lt;/p&gt;&lt;p&gt;The first problem was that I'd never used Word (or any other WYSIWYG editor). It seems strange to me, but then I've been using emacs so long I'm probably corrupted.&lt;/p&gt;&lt;p&gt;Word 2007 has MathML input/output (via an XSL stylesheet installed with the system), and has HTML input/output (via its save as web page file menu), so the plan of action is: save the document as html, clean it up to xhtml, using the stylesheet to convert the mathematics to MathML at the same time.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Write your document in Word 2007, save as web page &lt;i&gt;file.htm&lt;/i&gt; .&lt;/li&gt;&lt;li&gt;Use &lt;a href="http://home.ccil.org/%7Ecowan/XML/tagsoup/"&gt;tagsoup&lt;/a&gt; to get some usable XML from this output.
&lt;code&gt;java -jar tagsoup-1.1.jar  --lexical --output-encoding=iso-8859-1 &lt;i&gt;file.htm&lt;/i&gt; &amp;gt; temp.xml&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Use the supplied &lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/xhtml-mathml.xsl"&gt;xhtml-mathml&lt;/a&gt; stylesheet to do some further cleanup and apply the Microsoft supplied omml2mml.xsl stylesheet to the math fragments.
&lt;code&gt;java -jar saxon8.jar -o &lt;i&gt;file.xml&lt;/i&gt; temp.xml xhtml-mathml.xsl&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;Example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/test1.docx"&gt;Word document (docx)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/test1.htm"&gt;"HTML" generated by Word&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dcarlisle.demon.co.uk/omml2mml/test1.xml"&gt;XHTML + MathML&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Comments welcome!&lt;/p&gt;
 &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-6636680811935324386?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/6636680811935324386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=6636680811935324386' title='30 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6636680811935324386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/6636680811935324386'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/xhtml-and-mathml-from-office-20007.html' title='XHTML and MathML from Office 2007'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>30</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-8757979454071000261</id><published>2007-04-09T22:41:00.001+01:00</published><updated>2007-04-26T00:54:08.102+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogger'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='emacs'/><title type='text'>testing the interface</title><content type='html'>
    &lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;
&lt;p&gt;Just testing...&lt;/p&gt;
&lt;p&gt;I probably won't be posting too much &lt;a href='http://www.w3.org/TR/MathML'&gt;MathML&lt;/a&gt; here, but I wanted to check it was possible. Unfortunately I think blogger always serves as text/html,
but &lt;a href='http://www1.chapman.edu/~jipsen/'&gt;Peter Jipsen&lt;/a&gt;'s script seems to work well in this context. Currently it requires a Gecko browser such as Firefox, or IE with &lt;a href='http://www.mathplayer.com'&gt;MathPlayer&lt;/a&gt; installed. Hopefully I can extend the script to allow some basic CSS rendering in other browsers later.&lt;/p&gt;
&lt;p&gt;I also needed to check I could write posts in &lt;a href='http://emacspeak.blogspot.com/2007/03/emacs-client-for-google-services.html'&gt;emacs&lt;/a&gt; of course!&lt;/p&gt;
&lt;p&gt;Finally some examples using the &lt;a href='http://www1.chapman.edu/~jipsen/mathml/mathhtml/'&gt;MathML in HTML script&lt;/a&gt;. &lt;math xmlns='http://www.w3.org/1998/Math/MathML'&gt;&lt;mfrac&gt;&lt;mn&gt;1&lt;/mn&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/mfrac&gt;&lt;/math&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;math xmlns='http://www.w3.org/1998/Math/MathML'&gt;
    &lt;mrow&gt;
      &lt;mi&gt;x&lt;/mi&gt;
      &lt;mo&gt;=&lt;/mo&gt;
      &lt;mfrac&gt;
        &lt;mrow&gt;
          &lt;mrow&gt;
            &lt;mo&gt;-&lt;/mo&gt;
            &lt;mi&gt;b&lt;/mi&gt;
          &lt;/mrow&gt;
          &lt;mo&gt;±&lt;/mo&gt;
          &lt;msqrt&gt;
            &lt;mrow&gt;
              &lt;msup&gt;
                &lt;mi&gt;b&lt;/mi&gt;
                &lt;mn&gt;2&lt;/mn&gt;
              &lt;/msup&gt;
              &lt;mo&gt;-&lt;/mo&gt;
              &lt;mrow&gt;
                &lt;mn&gt;4&lt;/mn&gt;
                &lt;mo&gt;⁢&lt;/mo&gt;
                &lt;mi&gt;a&lt;/mi&gt;
                &lt;mo&gt;⁢&lt;/mo&gt;
                &lt;mi&gt;c&lt;/mi&gt;
              &lt;/mrow&gt;
            &lt;/mrow&gt;
          &lt;/msqrt&gt;
        &lt;/mrow&gt;
        &lt;mrow&gt;
          &lt;mn&gt;2&lt;/mn&gt;
          &lt;mo&gt;⁢&lt;/mo&gt;
          &lt;mi&gt;a&lt;/mi&gt;
        &lt;/mrow&gt;
      &lt;/mfrac&gt;
    &lt;/mrow&gt;
  &lt;/math&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;[update, continuous Relax NG validation of the mathml in xhtml
in atom markup as I type into this emacs buffer. Isn't emacs
wonderful. Will post schemas used shortly.]&lt;/i&gt;&lt;/p&gt;
   &lt;/div&gt;
  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-8757979454071000261?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/8757979454071000261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=8757979454071000261' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8757979454071000261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/8757979454071000261'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/04/testing-interface.html' title='testing the interface'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6082261199073042821.post-7142583662947012139</id><published>2007-03-25T00:10:00.000Z</published><updated>2007-04-11T22:08:44.464+01:00</updated><title type='text'>Hello World</title><content type='html'>I thought I'd start a blog.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6082261199073042821-7142583662947012139?l=dpcarlisle.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dpcarlisle.blogspot.com/feeds/7142583662947012139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6082261199073042821&amp;postID=7142583662947012139' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7142583662947012139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6082261199073042821/posts/default/7142583662947012139'/><link rel='alternate' type='text/html' href='http://dpcarlisle.blogspot.com/2007/03/hello-world.html' title='Hello World'/><author><name>David Carlisle</name><uri>https://profiles.google.com/107847268022850354754</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-5fp4icqY6kI/AAAAAAAAAAI/AAAAAAAAAAA/iRCXBm3Y1Fo/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry></feed>
