EMML (Motorola)

Last updated

EMML (Enterprise Mobility Mark-up Language) is an extension of the HTML language. It is less of a strict set of functions and tags, but more a standard for providing developers of web-based mobility applications a means to configure, control and retrieve information from additional input devices and features of rugged mobile computers.

Contents

History

EMML 1.0

EMML was first devised by James Morley-Smith in 2001, when working as a Software Developer at Symbol Technologies (now a wholly owned subsidiary of Motorola, Inc). As part of the first version of Symbol’s PocketBrowser, EMML was originally a mechanism for providing access to the barcode scanner built into many of Symbol's enterprise mobility devices. It was extended to include features such as WLAN signal indicators, power statistics and access to the communications port to allow for input from custom devices such as magnetic card readers and temperature probes.

EMML 1.0 support is currently offered by commercial browsers and development tools from companies such as Naurtech, Intermec, Wavelink, and Georgia Softworks [1] .

EMML 1.1

In 2009 Motorola created an updated version of EMML in order to co-ordinate it with other Internet standards, most notably CSS. There was a clear focus on simplifying the standard and reducing the amount of redundant code. In doing so, the number of bytes required to be downloaded was reduced and the readability of the language was vastly improved.

Previously, all parameters had to be supplied to each META function individually. This meant that each module might have several META tags, each taking up several bytes worth of data. In EMML 1.1, parameters can be supplied in a semi-colon delimited list, much like styles in a CSS style block in HTML.

Characteristics

Usage of the Meta tag

EMML utilizes the Meta tag from the HTML language to set properties and specify callback functions by which the browser returns information. According to the W3C the META Tag is: "an extensible container for use in identifying specialized document meta-information". [2]

In EMML, the http-equiv parameter is primarily used to identify the module of functionality. The content parameter is used to set properties, methods, and associated events.

Actions

There are three main actions in the EMML language:

  1. Setting property values
  2. Invoking methods
  3. Retrieving information through events

Setting property values

In EMML, setting properties is a case of providing the module and property to set, followed by the value.

In EMML 1.0

Example 1. The following is an example of setting the x-position in pixels of the on screen battery indicator in EMML 1.0:

<metahttp-equiv="battery"content="x=100"/>

Example 2. This is an example of several parameters being applied to the battery module using EMML 1.0:

<metahttp-equiv="battery"content="x=10"/><metahttp-equiv="battery"content="y=10"/><metahttp-equiv="battery"content="rgb:ff,00,00"/>

In EMML 1.1

The example shown in Example 2. in In EMML 1.0 can be written this way in EMML 1.1:

<metahttp-equiv="battery"content="left:10; top:10; color:#ff0000;"/>

It is immediately apparent in the example from EMML 1.1 that there is less redundant information. It may also be observed that the x and y parameters from EMML 1.0 have been substituted for the left and top parameters familiar to CSS. This is also true for the w and h EMML 1.0 parameters that have become width and height in EMML 1.1. The way in which color is described was also changed to the #rrggbb format of HTML and CSS.

Invoking methods

Methods are written in a way similar to setting a property. Again, the module appears in the http-equiv parameter, and the action in the content parameter.

In EMML 1.0

The following would cause the on screen battery indicator to be displayed:

<metahttp-equiv="battery"content="show"/>

In EMML 1.1

The show method from EMML 1.0 was dropped in favor of the visibility parameter with the visible value, similarly hide is now the hidden value of the visibility parameter.

<metahttp-equiv="battery"content="left:10; top:10; color:#ff0000; visibility:visible;"/>

Retrieving information through events

Retrieving information is carried out by specifying a callback function to which the EMML browser returns information. Typically, META functions which return information were named as the module name followed by the word "navigate". The callback function could be a URL, where the data is passed as name–value pairs in the query string, or a JavaScript function or variable.

In EMML 1.0

The following is how you would set all of these for the batterynavigate function in EMML 1.0

Note: all of these methods would not be included in one document, they are included here as an example.

<!-- A call-back to a URL --><metahttp-equiv="batterynavigate"content="http://myserver/mypage.html?ACLineStatus=%s&BatteryLifePercent=%s&BackupBatteryLifePercent=%s"/><!-- A call-back to a JavaScript function --><metahttp-equiv="batterynavigate"content="Javascript:doBattery('%s', '%s', '%s');"/><!-- A call-back to a JavaScript variable --><metahttp-equiv="batterynavigate"content="Javascript:var bACLine = '%s'; var iBattPC = '%s'; var iBkUpPC ='%s';"/>

In EMML 1.0, you specify a place holder for each value you are interested in using a %s. This has the drawback of requiring the developer to supply a placeholder for inconsequential values. For example, placeholders would be required for 8 values, even if only the 1st and 8th values were of interest.

In EMML 1.1

In EMML 1.1 events have a parameter value for each event and each module can therefore support more than one event.

<metahttp-equiv="battery"content="batteryevent:url('http://myserver/mypage.html?ACLineStatus=%s&BatteryLifePercent=%s&BackupBatteryLifePercent=%s');"/>

Or

<metahttp-equiv="battery"content="batteryevent:url('Javascript:doBatt('%s', '%s');');"/>

In EMML 1.1, the s can be substituted for a numerical value representing the position of the value of interest. Therefore, if requesting the 1st and 8th values from the signalevent of the signal module, the tag might be written as follows:

<metahttp-equiv="signal"content="signalevent:url('Javascript:doWLAN('%1', '%8');');"/>

EMML profiles (EMMP)

Also added in EMML 1.1 were EMML profiles. EMML profiles are similar to CSS style sheets. An EMML profile allows for the creation of EMML classes – a common set of EMML Meta tags which can be applied to a page or element.

Below is an example of an EMML profile page:

.inventoryBarcodes{scanner-alldecoders:disabled;scanner-code128redundancy:true;scanner-code128minlength:10;scanner-code128maxlength:16;scanner-code128:enabled;scanner-ean13:enabled;scanner-i2of5:enabled;}.inventoryBattery{battery-left:10;battery-top:0;battery-visibility:visible;}

EMML Profiles are stored in .emmp files; these can be linked to the HTML document using the import method of the EMMLProfile module. This is an example of how an EMMP file would be linked:

<metahttp-equiv="emmlprofile"content="source:url('http://myserver/inventoryprofiles.emmp'); import;">

Note: Each META tag is parsed from left to right applying each component part in turn. Therefore, in the above example, the sourceparameter will be set before the import method is called. The same is true for EMML Profiles which are applied from top downwards.

When a profile page is linked, the class name can simply be referenced, and with that, all the parameters in the profile can be applied with one command.

<metahttp-equiv="emmlprofile"content="apply:inventoryBarcode; apply:inventoryBattery"/>

As can be seen from the example above, it is possible to set any number of profiles. When doing this, however, one should be aware of conflicting parameters.

See also

Rhodes Framework

Related Research Articles

<span class="mw-page-title-main">HTML</span> HyperText Markup Language

The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScript.

Meta elements are tags used in HTML and XHTML documents to provide structured metadata about a Web page. They are part of a web page's head section. Multiple Meta elements with different attributes can be used on the same page. Meta elements can be used to specify page description, keywords and any other metadata not provided through the other head elements and attributes.

<span class="mw-page-title-main">Bookmarklet</span> Web browser bookmark containing JavaScript code

A bookmarklet is a bookmark stored in a web browser that contains JavaScript commands that add new features to the browser. They are stored as the URL of a bookmark in a web browser or as a hyperlink on a web page. Bookmarklets are usually small snippets of JavaScript executed when user clicks on them. When clicked, bookmarklets can perform a wide variety of operations, such as running a search query from selected text or extracting data from a table.

An HTML element is a type of HTML document component, one of several types of HTML nodes. The first used version of HTML was written by Tim Berners-Lee in 1993 and there have since been many versions of HTML. The current de facto standard is governed by the industry group WHATWG and is known as the HTML Living Standard.

URL redirection, also called URL forwarding, is a World Wide Web technique for making a web page available under more than one URL address. When a web browser attempts to open a URL that has been redirected, a page with a different URL is opened. Similarly, domain redirection or domain forwarding is when all pages in a URL domain are redirected to a different domain, as when wikipedia.com and wikipedia.net are automatically redirected to wikipedia.org.

The blink element is a non-standard HTML element that indicates to a user agent that the page author intends the content of invisible). The element was introduced in Netscape Navigator but is no longer supported and often ignored by modern Web browsers; some, such as Internet Explorer, never supported the element at all.

<span class="mw-page-title-main">XMLHttpRequest</span> Web API to transfer data between a web browser and a web server

XMLHttpRequest (XHR) is a JavaScript class containing methods to asynchronously transmit HTTP requests from a web browser to a web server. The methods allow a browser-based application to make a fine-grained server call and store the results in XMLHttpRequest's responseText attribute. The XMLHttpRequest class is a component of Ajax programming. Prior to Ajax, an HTML form needed to be completely sent to the server followed by a complete browser page refresh.

In computer hypertext, a URI fragment is a string of characters that refers to a resource that is subordinate to another, primary resource. The primary resource is identified by a Uniform Resource Identifier (URI), and the fragment identifier points to the subordinate resource.

Meta refresh is a method of instructing a web browser to automatically refresh the current web page or frame after a given time interval, using an HTML meta element with the http-equiv parameter set to "refresh" and a content parameter giving the time interval in seconds. It is also possible to instruct the browser to fetch a different URL when the page is refreshed, by including the alternative URL in the content parameter. By setting the refresh time interval to zero, meta refresh can be used as a method of URL redirection.

jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animations, and Ajax. It is free, open-source software using the permissive MIT License. As of August 2022, jQuery is used by 77% of the 10 million most popular websites. Web analysis indicates that it is the most widely deployed JavaScript library by a large margin, having at least three to four times more usage than any other JavaScript library.

<span class="mw-page-title-main">HTTP 301</span> HTTP response status code

On the World Wide Web, HTTP 301 is the HTTP response status code for 301 Moved Permanently. It is used for permanent redirecting, meaning that links or records returning this response should be updated. The new URL should be provided in the Location field, included with the response. The 301 redirect is considered a best practice for upgrading users from HTTP to HTTPS.

Haml is a templating system that is designed to avoid writing inline code in a web document and make the HTML cleaner. Haml gives you the flexibility to have some dynamic content in HTML. Similar to other template systems like eRuby, Haml also embeds some code that gets executed during runtime and generates HTML code in order to provide some dynamic content. In order to run Haml code, files need to have a .haml extension. These files are similar to .erb or .eRuby files, which also help embed Ruby code while developing a web application.

<span class="mw-page-title-main">Hop (software)</span>

Hop is a Lisp-like programming language by Manuel Serrano for web 2.0 and also the name of the web broker that implements this language. It is written in Bigloo Scheme. It is a project funded by INRIA.

JSONP, or JSON-P, is a historical JavaScript technique for requesting data by loading a <script> element, which is an element intended to load ordinary JavaScript. It was proposed by Bob Ippolito in 2005. JSONP enables sharing of data bypassing same-origin policy, which disallows running JavaScript code to read media DOM elements or XMLHttpRequest data fetched from outside the page's originating site. The originating site is indicated by a combination of URI scheme, hostname, and port number.

Extensible HyperText Markup Language (XHTML) is part of the family of XML markup languages which mirrors or extends versions of the widely used HyperText Markup Language (HTML), the language in which Web pages are formulated.

<span class="mw-page-title-main">CSS</span> Style sheet language

Cascading Style Sheets (CSS) is a style sheet language used for specifying the presentation and styling of a document written in a markup language such as HTML or XML. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript.

HTML attributes are special words used inside the opening tag to control the element's behaviour. HTML attributes are a modifier of a HTML element type. An attribute either modifies the default functionality of an element type or provides functionality to certain element types unable to function correctly without them. In HTML syntax, an attribute is added to a HTML start tag.

XHTML+RDFa is an extended version of the XHTML markup language for supporting RDF through a collection of attributes and processing rules in the form of well-formed XML documents. XHTML+RDFa is one of the techniques used to develop Semantic Web content by embedding rich semantic markup. Version 1.1 of the language is a superset of XHTML 1.1, integrating the attributes according to RDFa Core 1.1. In other words, it is an RDFa support through XHTML Modularization.

Content Security Policy (CSP) is a computer security standard introduced to prevent cross-site scripting (XSS), clickjacking and other code injection attacks resulting from execution of malicious content in the trusted web page context. It is a Candidate Recommendation of the W3C working group on Web Application Security, widely supported by modern web browsers. CSP provides a standard method for website owners to declare approved origins of content that browsers should be allowed to load on that website—covered types are JavaScript, CSS, HTML frames, web workers, fonts, images, embeddable objects such as Java applets, ActiveX, audio and video files, and other HTML5 features.

<span class="mw-page-title-main">Yesod (web framework)</span>

Yesod is a web framework based on the programming language Haskell for productive development of type-safe, representational state transfer (REST) model based, high performance web applications, developed by Michael Snoyman, et al. It is free and open-source software released under an MIT License.

References