13. MathML e SVG
MathML
O HTML5 incorpora o padrão MathML. Trata-se de uma linguagem de marcação, baseada em XML, para representação de fórmulas matemáticas. Você pode ler mais sobre MathML em http://www.w3.org/Math/. Para incorporar código MathML em seu documento HTML5, não preciso fazer declarações especiais. Basta escrever normalmente o código, iniciando com um elemento math. Veja este exemplo:
Arquivo: exemplos/13/mathml.html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>MathML</title> 6 </head> 7 <body> 8 9 <math xmlns="http://www.w3.org/1998/Math/MathML"> 10 <mrow> 11 <mi>x</mi> 12 <mo>=</mo> 13 <mfrac> 14 <mrow> 15 <mo form="prefix">−</mo> 16 <mi>b</mi> 17 <mo>±</mo> 18 <msqrt> 19 <msup> 20 <mi>b</mi> 21 <mn>2</mn> 22 </msup> 23 <mo>−</mo> 24 <mn>4</mn> 25 <mo>⁢</mo> 26 <mi>a</mi> 27 <mo>⁢</mo> 28 <mi>c</mi> 29 </msqrt> 30 </mrow> 31 <mrow> 32 <mn>2</mn> 33 <mo>⁢</mo> 34 <mi>a</mi> 35 </mrow> 36 </mfrac> 37 </mrow> 38 </math> 39 40 </body> 41 </html>
Veja como esse exemplo é renderizado no navegador:

Mesmo que você nunca tenha visto MathML, e este código pareça um pouco assustador, dê uma olhada com calma no código, comparando com a imagem do resultado, e você vai perceber que é muito simples. Talvez algo que possa deixá-lo confuso é a entidade ⁢, que aparece algumas vezes no código. Ela está lá para separar os fatores 4ac, por exemplo. Esses valores são multiplicados, é o que a fórmula representa, mas não queremos colocar um operador de multiplicação entre eles, porque por convenção se simplesmente escrevemos 4ac qualquer leitor saberá que isso é uma multiplicação.
Por que então se preocupar em inserir ⁢? Você vai notar que se remover a entidade e a tag mo correspondente o resultado visual será o mesmo. Colocamos ⁢ porque MathML não é só visual, é semântica. Um outro agente de usuário pode ter recursos de importar essa fórmula para uma ferramenta de cálculo, por exemplo.
SVG
Assim como MathML, SVG é uma outra linguagem XML que pode ser incorporada com facilidade em HTML5. Você pode ler mais sobre SVG em http://www.w3.org/Graphics/SVG/. SVG é uma linguagem para marcação de gráficos vetoriais. Vejamos um exemplo bem simples:
Arquivo: exemplos/13/svg.html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8" /> 5 <title>SVG</title> 6 </head> 7 <body> 8 9 <svg width="400" height="400"> 10 11 <!-- Um retângulo: --> 12 <rect x="10" y="10" width="150" height="50" stroke="#000000" stroke-width="5" fill="#FF0000" /> 13 14 <!-- Um polígono: --> 15 <polygon fill="red" stroke="blue" stroke-width="10" 16 points="250,75 279,161 369,161 297,215 17 323,301 250,250 177,301 203,215 18 131,161 221,161" /> 19 20 <!-- Um círculo --> 21 <circle cx="70" cy="240" r="60" stroke="#00FF00" stroke-width="5" fill="#FFFFFF" /> 22 23 </svg> 24 25 </body> 26 </html>
E veja como isso é renderizado no navegador:

É possível fazer muito mais com SVG. A maioria dos editores de gráficos vetoriais hoje exporta e importa automaticamente SVG, permitindo a um designer construir um gráfico em seu editor vetorial predileto e exportá-lo diretamente. Em seguida, um programador pode construir javascript que manipula esse SVG, usando os métodos do DOM. Com isso você pode ter gráficos dinâmicos, com animação, escaláveis e com excelente qualidade visual, programáveis em Javascript, sem tecnologias proprietárias e plugins.