[icoSystem.png]Sitemap
[icoDocs.png]Documents
[icoFolderApps.png]Program files
[icoFolderWin.png]Windows
[icoDocs.png] Documents[icoFolderXml.png] XML files[icoBase64.png] Base64 toolkit
[icoBase64.png]
 Base64 toolkit (1dec2008)
If you want to embed some binary data in a text file, you must encode them using a set of proper text characters. The preferred encoding method for this purpose is the base64 (usually used for attachments in mails using MIME), because the data size increases of just about 4/3. Most XML parsers (like XSL or XHTML interpreters) can decode base64 data chunks, for example, you can embed external files in XHTML in this way:
 base64.html
<!DOCTYPE html> <html> <head> <title>Example</title> </head> <style> body{background-image:url(data:image/png;base64,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);} object {background-color:lightgray; border:thin solid gray;} </style> <body> <h1>A test</h1> <p>Embedded image: <img alt="Embedded Image" src="data:image/gif;base64,R0lGODlhEgASAOYAAACZAGbMMyx706ZsAAVAou3RtKadsTljiajL8pycptfYvczMzHu28lCRyT65HNWbO+jp+LDipG/CYQpbJ+bm5mSs8TpsTT5wpsLY8pKOnJjRkej43sbH1FyX15ScpUmwOSpyx76+vtO2ilWRXSGqEtbX5YzI9u/w+buPNwCBIczk/lGc5nzCcnSHo566nhVqytjY2P/LebTS5qO9xv+7XErAG6zX/laZVHybyXa08V6j6dXi83vTVcKCAEeW5Bx5KjeG0KSkr87P34a+9JbB797c2Wa4/xZkvAumAPvv/RlwNra2t3Wrz92wXObz5jyzM5W9juWqZ//cnpnM/7/FzK2sr5fG9lB2no287it0yimuGnfEbr7f/yKTI8nW4l6l67h/AN/Z32Gf5RF3ILCxslbEKLSstlaj7t3r+Gqu8NbQyVe6Qd710maZZseCErq1sCFpwJippbbe//fu+BBTsLnSuU9+sMO/vv///xikBHDROTN2uaLJ5+OpTu/17+7p7iH5BAQUAP8ALAAAAAASABIAAAf/gBAnEDuFGIcYCIpWVlheglyMVkNDDDlpaV9fZ5wdQmhDRqJGZxU5DJSUVlM4Hio5fDNxMzJDaBRhRUVqvG8eXCYiYD1gClY7C8kwyxRLHnIMYGBNfQUmaHh+fxQwFHjOckwDD1Ix1l53IeohMH5kCTZDKG40UX9EXkUwYXNzf39V4JnAcUBBgw5W0N1xoUFDnTkBbeig82IFkCNiSlDQwCOAgzxbzCSQI4AAHDggQKwQAoWHnjJanjxpYwDBFzE6cupYyaJMjZ9+IowxYOWSphU+fFBZw0KCAydsSIxJYAWTpi8rVlD5sCWJnw0kACgJQuTSGR8C9lzIcAOJhg1aLgCksCBkBw47V1okCFECQokuAPLIneABguG+hhNDEDLihxILGRRLlrwkCIfEgQAAOw==" /> </p> <p>Embedded html: <object width="300" height="100" type="text/html" data="data:text/html;base64,PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCjxoZWFkPg0KICA8dGl0bGU+RW1iZWRkZWQ8L3RpdGxlPg0KPC9oZWFkPg0KPGJvZHk+DQogPGgxPkNpYW88L2gxPg0KIGNpYW8gY2lhbyBncmF6aWUNCjwvYm9keT4NCjwvaHRtbD4=">alt : <a href="C:\Documents and Settings\matteo.gattanini\Documenti\RD\xml base64\Copia di test.html">Copia di test.html</a></object> </p> </body> </html>
As you can see if you want to take advantage of this feature, you should indicate to the parser the type of embedded data using the MIME types convention. Do some experiment with this tool: [ico7zArchive.png]b64Toolkit.7z (207KB) Note: it hangs for big data sizes (due to AnsiString-TStrings limitations), but you can easily change the source code to overcome this issue.