Vector Markup Language

From Wikipedia, the free encyclopedia
Jump to: navigation, search
"VML" redirects here. For the company, see VML, Inc.. For the muscle, see vastus medialis longus.
Vector Markup Language
Filename extension .htm or .html
Internet media type application/vnd.openxmlformats-officedocument.vmlDrawing
Developed by Microsoft
Type of format Vector image format
Extended from XML
Standard Part of ECMA-376 and ISO/IEC 29500:2008
Website ECMA-376, ISO/IEC 29500-4:2012

Vector Markup Language (VML) is an XML-based file format for two-dimensional vector graphics.

VML is specified in Part 4 of the Office Open XML standards ISO/IEC 29500 and ECMA-376. According to the specification, VML should be considered a deprecated format included in Office Open XML for legacy reasons only.[1][2]

VML is pervasively used in MS Office 2007 (and later version) documents (i.e. Word, Excel and Powerpoint documents).[1][3][4]

As of 2012, with the release of Internet Explorer 10, VML became obsolete and was no longer deemed supported by Microsoft.[5] VML, now considered a legacy feature remains available in Internet Explorer 10 only when the browser is set to run in modes to emulate the functionality of previous versions of Internet Explorer 5, 7, 8, and 9.

History[edit]

VML was submitted to the W3C in 1998 by Autodesk, Hewlett-Packard, Macromedia, Microsoft, and Vision.[6] Around the same time other competing W3C submissions were received in the area of web vector graphics, such as PGML from Adobe Systems, Sun Microsystems, and others.[7] As a result of these submissions, a new W3C working group was created, which produced Scalable Vector Graphics (SVG). SVG became a W3C Recommendation in 2001 as a language for describing two-dimensional vector and mixed vector/raster graphics in XML.[8] VML has been largely deprecated in favor of other formats, such as SVG.[9] SVG is not compatible with VML.[10]

Microsoft documented VML,[11] development of the format ceased in 1998.[12] VML is implemented in Internet Explorer from version 5 to version 9 and in Microsoft Office 2000. VML is no longer available in Internet Explorer 10.[13] Microsoft expects web sites to transition to SVG.[14] Version 2 of the Google Maps JavaScript API used to use VML for vector paths on Internet Explorer 5.5+,[15] but has been officially deprecated in favour of version 3, which does not.[16]

Syntax[edit]

Below is a VML instance as produced by Microsoft Excel 2010:

<xml xmlns:v="urn:schemas-microsoft-com:vml"
 xmlns:o="urn:schemas-microsoft-com:office:office"
 xmlns:x="urn:schemas-microsoft-com:office:excel">
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1"/>
 </o:shapelayout><v:shapetype id="_x0000_t202" coordsize="21600,21600" o:spt="202"
  path="m,l,21600r21600,l21600,xe">
  <v:stroke joinstyle="miter"/>
  <v:path gradientshapeok="t" o:connecttype="rect"/>
 </v:shapetype><v:shape id="_x0000_s1025" type="#_x0000_t202" style='position:absolute;
  margin-left:203.25pt;margin-top:82.5pt;width:108pt;height:59.25pt;z-index:1;
  visibility:hidden' fillcolor="#ffffe1" o:insetmode="auto">
  <v:fill color2="#ffffe1"/>
  <v:shadow on="t" color="black" obscured="t"/>
  <v:path o:connecttype="none"/>
  <v:textbox style='mso-direction-alt:auto'>
   <div style='text-align:left'></div>
  </v:textbox>
  <x:ClientData ObjectType="Note">
   <x:MoveWithCells/>
   <x:SizeWithCells/>
   <x:Anchor>
    4, 15, 5, 10, 6, 31, 9, 9</x:Anchor>
   <x:AutoFill>False</x:AutoFill>
   <x:Row>6</x:Row>
   <x:Column>3</x:Column>
  </x:ClientData>
 </v:shape>
</xml>

Note that, by specifying a root element named "xml", VML contravenes the XML Recommendation of the W3C, which states that names beginning 'x' 'm' 'l' are "reserved for standardization in this or future versions of this specification".[17]

VML oval in Internet Explorer
VML Webart example[18]

VML, when embedded within HTML markup, is read and processed by Microsoft Internet Explorer (but not other browsers); for example, the following example displays a solid blue oval:

<html xmlns:v>
<style>v\:*{behavior:url(#default#VML);position:absolute}</style>
<body>
<v:oval style="left:0;top:0;width:100;height:50" fillcolor="blue" stroked="f"/>
</body>
</html>

Implementations[edit]

VML is used by most Microsoft Office applications, such as Microsoft Word and Microsoft Visio, within HTML files created using the 'Save As HTML' option (plain HTML or MHT). Such files retain complete vector information, and can be reopened for editing using other Microsoft applications, such as Microsoft PowerPoint. VML was natively supported by Microsoft's Internet Explorer up to version 9 inline within HTML, using an undefined version of SGML namespaces. Support for VML was dropped in Internet Explorer 10 and subsequent versions.[19]

Support for "ink annotations" in Office Open XML files was added to LibreOffice during the 3.7 development cycle.[20]

VML is not natively supported by most web browsers. Web browsers such as Mozilla Firefox, Opera, Safari or Google Chrome support SVG instead of VML.

Microsoft Outlook HTML Email Rendering[21][edit]

Though VML is deprecated as a standard in Internet Explorer, it is most commonly used in relation to the development of HTML emails rendered in Microsoft Outlook 2007, 2010, and 2013. The use of background-images in email campaigns requires the use of VML to be displayed in Outlook because Outlook does not support the CSS or HTML attributes for background-images.

Full width table cell background images[edit]

<html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
        <style>
            v:* { behavior: url(#default#VML); display: inline-block; }
        </style>
    </head>
    <body>
    <table width="100%" height="20">
        <tr>
            <td bgcolor="#dddddd" style="background-image:url('http://placekitten.com/g/500/300');background-repeat:no-repeat;background-position:center;" background="http://placekitten.com/g/500/300" width="100%" height="300">
            <!--[if gte mso 9]>
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:300px;">
                <v:fill type="frame" src="http://placekitten.com/g/500/300" color="#ffffff" />
            </v:rect>
            <![endif]-->
            </td>
        </tr>
    </table>
</body>
</html>

Tiled full width table cell background images[edit]

<html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
        <style>
            v:* { behavior: url(#default#VML); display: inline-block; }
        </style>
    </head>
    <body>
    <table width="100%" height="20">
        <tr>
            <td bgcolor="#dddddd" style="background-image:url('http://placekitten.com/g/500/300');background-repeat:no-repeat;background-position:center;" background="http://placekitten.com/g/500/300" width="100%" height="300">
            <!--[if gte mso 9]>
            <v:rect xmlns:v="urn:schemas-microsoft-com:vml" fill="true" stroke="false" style="mso-width-percent:1000;height:300px;">
                <v:fill type="tile" src="http://placekitten.com/g/500/300" color="#ffffff" />
            </v:rect>
            <![endif]-->
            </td>
        </tr>
    </table>
</body>
</html>

Specified width table cell background images[edit]

<html xmlns:v="urn:schemas-microsoft-com:vml">
    <head>
        <style>
            v:* { behavior: url(#default#VML); display: inline-block; }
        </style>
    </head>
    <body>
    <table width="600" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse;">
        <tr>
            <td style="width: 300px; height: 80px; background-image: url('http://placekitten.com/g/300/80');">
            <!--[if gte mso 9]>
            <v:image xmlns:v="urn:schemas-microsoft-com:vml" id="theImage" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 300px; height: 80px; top: 0; left: 0; border: 0; z-index: 1;' src="http://placekitten.com/g/300/80" />
                <v:shape xmlns:v="urn:schemas-microsoft-com:vml" id="theText" style='behavior: url(#default#VML); display: inline-block; position: absolute; width: 300px; height: 80px; top: -5; left: -10; border: 0; z-index: 2;'>
                <div>
             <![endif]-->
             <table width="300" border="0" cellspacing="0" cellpadding="0" style="border-collapse: collapse;">
                 <tr>
                     <td height="80" align="center" valign="top" style="color:#ffffff;font-size:20px;"><span>Text</span></td>
                 </tr>
             </table>
             <!--[if gte mso 9]>
                 </div>
                 </v:shape>
             <![endif]-->
             </td>
         </tr>
    </table>
</body>
</html>

See also[edit]

References[edit]

  1. ^ a b "Is VML in or out now, or was that a typo?". 2007-06-22. Archived from the original on 2008-06-21. Retrieved 2010-07-29. 
  2. ^ "Ecma TC45 - New proposed dispositions extend progress in addressing all National Body comments, seek to document and resolve legacy issues – Nearly 2/3 of comments now reviewed". 2007-12-21. Retrieved 2010-07-29. 
  3. ^ Stephane Rodriguez (2007-09-04). "Microsoft Office XML formats ? Defective by design". 
  4. ^ Yegor Kozlov. "POI API Documentation — Class XSSFVMLDrawing". Apache Software Foundation. Retrieved 2010-07-29. 
  5. ^ Microsoft. "VML is no longer supported". 
  6. ^ Mathews, Brian; Brian Dister; John Bowler; Howard Cooper stein; Ajay Jindal; Tuan Nguyen; Peter Wu; Troy Sandal (13 May 1998). "Vector Markup Language (VML)". W3C. Retrieved 2009-05-08. 
  7. ^ Al-Shamma, Nabeel; Robert Ayers; Richard Cohn; Jon Ferraiolo; Martin Newell; Roger K. de Bry; Kevin McCluskey; Jerry Evans (10 April 1998). "Precision Graphics Markup Language (PGML)". W3C. Retrieved 2009-05-08. 
  8. ^ W3C (2001-09-04). "Scalable Vector Graphics (SVG) 1.0 Specification". Retrieved 2010-07-29. 
  9. ^ Dennis Forbes (July 2003). "Vector Graphics". MSDN Magazine. Retrieved 2010-07-29. 
  10. ^ "VML — Vector Graphics on the Internet". July 2001. Retrieved 2010-07-29. 
  11. ^ "Vector Markup Language (VML)". Microsoft Corporation. Retrieved 2009-11-04. 
  12. ^ Jon Frost, Stefan Goessner, Michel Hirtzler (2003). Learn SVG: the web graphics standard. p. 7. ISBN 0-9741773-0-X. "Support for Microsoft's submission, VML, has been realized in Internet Explorer, but development stopped in the autumn of 1998." 
  13. ^ "Internet Explorer 10 Compatibility Cookbook (Windows)". MSDN. Microsoft. 1 October 2012. Retrieved 28 November 2012. 
  14. ^ Seth McEvoy (2010-03-16), VML to SVG Migration Guide, Microsoft, retrieved 2010-07-29 
  15. ^ "Map Overlays — Drawing Polylines". Google Maps API — version 2. Google. Retrieved 2010-05-25. 
  16. ^ "Google Maps Javascript API V3 Reference". Google Maps JavaScript API V3. Google. Retrieved 2010-05-25. 
  17. ^ "Extensible Markup Language (XML) 1.0 (Fifth Edition)". World Wide Web Consortium. 2008-11-26. Retrieved 2012-11-12. 
  18. ^ Vector Mona Lisa
  19. ^ http://www.tomshardware.com/news/microsoft-ie10-web-browser-dx-vml,14215.html
  20. ^ http://www.derivativezero.com/blog/2012/09/importing-ooxml-ink-annotations-into-libreoffice/
  21. ^ http://stackoverflow.com/a/23346010/1922144

External links[edit]