The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.


  MathML::Entities::Approximate - Returns approximated ASCII characters for XHTML+MathML Named Entities


A subclass of MathML::Entities that supplies ASCII-approximate characters for XHTML+MathML Named Entities.

  use lib (getpwnam('sdadmin'))[7] . '/perlib';
  use MathML::Entities::Approximate;

  $html    = '<strong>avanc&eacute;e</strong>';

  # convert to HTML character reference. Standard MathML::Entities
  $numeric = name2numbered($html)    # <strong>avanc&#x000E9;e</strong>

  # convert to standard ASCII
  $ascii   = name2approximated($html) # <strong>avancee</strong>

  # Muck around with the lookup table...
  MathML::Entities::Approximate::getSet(aacute);    # returns 'a'
  MathML::Entities::Approximate::getSet(aacute, z); # returns 'z'
  MathML::Entities::Approximate::getSet(aacute);    # now returns 'z'


MathML::Entities::Approximate is a content conversion filter for named XHTML+MathML entities. There are over two thousand named entities in the XHTML+MathML DTD, however only a fraction of them are variants on standard ASCII characters.

A string is parsed and every Named Entity is converted to a reasonable ASCII (7-bit ASCII set), or removed from the string.


There two functions, one of which is exported by default.

  • name2approximated

    (Exported by default)

    XHTML+MathML named entities in the argument of name2approximated() are replaced by the corresponding 7-bit ASCII character. Any entitiy which cannot be approximated is removed.

  • getSet

    (Never Exported)

    This method is provided to allow users to extend the internal %APPROXIMATES lookup table: either alter an existing entry [for the life of the process] or add new entities.

    Of course, for a large update to the lookup table, you have the option of:

      %MathML::Entities::Approximate:APPROXIMATES = (
        'foobar' => 'fb',         # LOWERCASE WELL SCUNNERED
        'FooBar' => 'FB',         # UPPERCASE WELL SCUNNERED
        'landrover' => 'landie',  # LOWERCASE PROPER MOTOR
        'LandRover' => 'Landie'   # UPPERCASE PROPER MOTOR


Ian Stuart <>


Copyright (c) 2005 Ian Stuart. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


MathML::Entities, HTML::Entities, HTML::Entities::Numbered,,