**MathML** (viết tắt cho **Mathematical Markup Language**, *Ngôn ngữ Đánh dấu Toán học*) là một ứng dụng XML nhằm viết ký hiệu và công thức toán học trên máy tính. Mục đích của ngôn ngữ lập trình này là trao đổi thông tin trên máy tính, từ đó hiển thị trên màn hình và tính toán. Tuy nhiên, MathML còn được dùng nhằm hiển thị thông tin toán học trên World Wide Web, mà W3C khuyên sử dụng.

Phiên bản 1.01 được công bố vào tháng 7 năm 1999 và bản 2.0 xuất hiện vào tháng 2 năm 2001. Tháng 10 năm 2003, bản chỉnh sửa lần thứ hai của phiên bản 2.0 của MathML được công bố là bản cuối cùng của nhóm toán W3C.

MathML được thiết kế để không chỉ *hiển thị* tốt công thức toán học mà còn, theo tùy chọn, chứa *ý nghĩa* của công thức, giúp các máy tính có thể trao đổi và *hiểu* nội dung toán học. Một chuẩn khác là OpenMath được thiết kế đặc biệt cho lưu trữ ý nghĩa toán học có thể được dùng để bổ trợ cho MathML.

Đối với hiển thị trên trang mạng, cấu trúc XML không ngắn gọn như TeX, nhưng có thể được dễ dàng sử dụng bởi các trình duyệt, cho phép hiển thị ngay lập tức công thức toán học một cách đẹp mắt, đồng thời truyền tải ý nghĩa toán học cho các phần mềm tính toán. Khác với TeX, MathML không được thiết kế để viết hay sửa trực tiếp bởi con người. Cần có công cụ soạn thảo, hay chuyển đổi từ ngôn ngữ thân thiện với người khác (như TeX), để cho ra kết quả là biểu diễn MathML.

Ví dụ
-----

Công thức bậc hai:

{\displaystyle x={\frac {-b\pm {\sqrt {b^{2}-4ac}}}{2a}}}
Vốn được viết theo ngữ pháp TeX:

```
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
```

Sẽ có thể được viết bằng MathML:

```
<math>
 <mrow>
 <mi>x</mi>
 <mo>=</mo>
 <mfrac>
 <mrow>
 <mrow>
 <mo>-</mo>
 <mi>b</mi>
 </mrow>
 <mo>±</mo>
 <msqrt>
 <mrow>
 <msup>
 <mi>b</mi>
 <mn>2</mn>
 </msup>
 <mo>-</mo>
 <mrow>
 <mn>4</mn>
 <mo>⁢</mo>
 <mi>a</mi>
 <mo>⁢</mo>
 <mi>c</mi>
 </mrow>
 </mrow>
 </msqrt>
 </mrow>
 <mrow>
 <mn>2</mn>
 <mo>⁢</mo>
 <mi>a</mi>
 </mrow>
 </mfrac>
 </mrow>
</math>
```

Nếu muốn hiển thị đúng trong trình duyệt Mozilla, cần thêm

```
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
 "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"
 [ <!ENTITY mathml "http://www.w3.org/1998/Math/MathML"> ] >
```

Và lưu giữ các mã này trong tập tin có đuôi `.xml`.

Như trong ví dụ trên:

```
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
 "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd"
 [ <!ENTITY mathml "http://www.w3.org/1998/Math/MathML"> ] >
<body>
<math xmlns="&mathml;">
<mrow>
 <mi>x</mi>
 <mo>=</mo>
 <mfrac>
 <mrow>
 <mrow>
 <mo>-</mo>
 <mi>b</mi>
 </mrow>
 <mo>±</mo>
 <msqrt>
 <mrow>
 <msup>
 <mi>b</mi>
 <mn>2</mn>
 </msup>
 <mo>-</mo>
 <mrow>
 <mn>4</mn>
 <mo>⁢</mo>
 <mi>a</mi>
 <mo>⁢</mo>
 <mi>c</mi>
 </mrow>
 </mrow>
 </msqrt>
 </mrow>
 <mrow>
 <mn>2</mn>
 <mo>⁢</mo>
 <mi>a</mi>
 </mrow>
 </mfrac>
</mrow>
</math>
</body>
```

Hỗ trợ
------

Có nhiều phần mềm chuyển TeX thành MathML. Như itex2mml Lưu trữ 2005-12-14 tại Wayback Machine. Hãng Wolfram Research cung cấp một trang mạng chuyển mọi biểu thức toán học sang MathML.

Trong số các trình duyệt thông dụng, Mozilla và một số trình duyệt cùng họ như là Mozilla Firefox trực tiếp hiển thị MathML.  Các trình duyệt khác có thể cần thêm phần mềm gắn vào; như Internet Explorer cần gắn thêm MathPlayer.

MathML được hỗ trợ bởi các phần mềm văn phòng như Microsoft Word, OpenOffice.org và KOffice và các phần mềm tính toán kỹ thuật như Maple, Mathematica, và MathCad.

Tham khảo
---------

Liên kết ngoài
--------------

* Trang chính thức trên W3C
* MathML ở Mozilla
* Phần mềm soạn MathML
* Phần mềm soạn MathML
* MathPlayer cho Internet Explorer.
* Trang công cụ MathML của Wolfram Research
* Chuẩn OpenMath Lưu trữ 2006-02-13 tại Wayback Machine
* Itex Lưu trữ 2006-02-03 tại Wayback Machine - Chuyển LaTeX thành MathML
* m:Blahtex Dự án chuyển mã TeX sang MathML cho Wikimedia.
* ASCIIMath Javascript để viết công thức toán học trong trình duyệt dùng MathML