Est. 1988 Intermediate

OmniMark

OmniMark is the streaming, rule-based text- and markup-processing language that Sam Wilmott designed at Exoterica Corporation in Ottawa for turning SGML (and later XML) documents into other things: a program is a set of find, element and translate rules that fire as data flows past, with an English-like pattern language in place of regular expressions and an element stack maintained by the built-in parser. Dated by its copyright notices to 1988 and sold commercially ever since - by Exoterica, by OmniMark Technologies (which gave version 5 away free in 1999 to challenge Perl), and since April 2001 by Stilo - it is a mainstay of the publishing industry's conversion pipelines and reached version 13 in May 2026

Created by Sam Wilmott (language design and specification) at Exoterica Corporation, Ottawa, with John McFadden (president of Exoterica and later of OmniMark Technologies) sharing the product concept; the 1997 Version 3 Programmer's Guide credits Norbert Winklareth with project management and Roy Amodeo, Omar Essa, Klaus Harbo, Habib Khalfallah, Eric Promislow and Winklareth as its developers. Wilmott, who had led typesetting-system development for the Canadian Government Printing Office in the 1970s and implemented one of the first SGML parsers, based OmniMark on his earlier HUGO text-processing language

Paradigm Streaming, rule-based and event-driven: a program is a collection of rules - find rules that match patterns in a data stream, element rules that fire when the built-in SGML/XML parser meets an element, translate rules that act on text on its way into the parser, plus process, document-start/end and markup-error rules - with procedural actions inside each rule. Later versions added functions, catch and throw, modules, records, overloaded and infix functions, coroutine-style string source and string sink functions, and markup-event streaming, so that OmniMark 8 and later is a general-purpose language whose I/O is built around streams
Typing Static, with a small set of built-in types: originally counter (integer), stream (text) and switch (Boolean), with the type herald written before each variable; version 5.3 (c. 2000) dropped the heralds and added integer/int32 and BCD (binary-coded decimal) types, version 7.1 added user-defined record types, and version 8 introduced string in place of stream. Variables are declared on shelves (indexed and keyed arrays of one type); patterns and markup values are first-class, and there is no implicit conversion between numbers and strings (the format operator is explicit)
First Appeared 1988 - every OmniMark manual from the 1997 Version 3 Programmer's Guide to the 2026 Version 13 documentation carries a copyright notice beginning in 1988, and Software Exoterica Corporation's 'XGML Application Developer's Manual' of 1988 is cited in the same year's Computers and the Humanities paper co-authored by John McFadden. The product was first called XTRAN; the May 1999 press release for OmniMark 5 said the language 'was first introduced 10 years ago', and Wilmott himself dates his originating of OmniMark to 'the early 1990's', so the first shipping OmniMark product is best placed at around 1989-1990
Latest Version OmniMark 13 (documentation dated 1 May 2026, announced by Stilo Corporation on 12 May 2026), adding Red Hat Enterprise Linux 10, Amazon Linux 2023, Ubuntu 22.04 and 24.04 and Windows Server 2022/2025. Earlier: 12.0 (documentation 31 January 2023, announced February-March 2023), 11.0 (announced 25 November 2019), 10.1.2 (documentation 1 April 2016)

OmniMark is a programming language for moving text from one shape into another, built around the idea that a document is a stream of events rather than a data structure in memory. An OmniMark program is a collection of rules. find rules match patterns in a stream of characters; element rules fire when the built-in SGML or XML parser encounters an element, with the parser keeping an element stack that the rule can interrogate (parent is "body", attribute id); translate rules act on text on its way into the parser. Unmatched input passes through to the output untouched, which makes a one-rule program a useful filter and a thousand-rule program a publishing system. Designed by Sam Wilmott at Exoterica Corporation in Ottawa, and dated by its copyright notices to 1988 - when Exoterica was documenting an SGML toolkit called XGML and a processor called XTRAN - it was one of the first languages written specifically for ISO 8879 SGML, and for the decade before XSLT existed it was the way large publishers, standards bodies and defence contractors converted legacy documents into SGML and SGML into print, CD-ROM and HTML.

It has never been free for long. Exoterica became OmniMark Technologies Corporation in the mid-1990s; in May 1999 the company gave version 5 away (“It costs a heck of a lot less than Perl!”) in a bid to become a general web-programming language, then withdrew the offer; and in April 2001 the company was bought by the UK’s Stilo, whose Ottawa subsidiary still sells it. What began, in Stilo’s own words, “as a very simple rule-based SGML scripting language” grew through versions 5 to 8 into a general-purpose language with modules, records, catch and throw, coroutine-style stream functions, database and web-service libraries and an Eclipse IDE, and it is still being released - version 13 shipped in May 2026 with Red Hat Enterprise Linux 10 and Ubuntu 24.04 support. Wilmott’s own verdict, at Balisage 2019, was that “OmniMark’s basic design and most useful features date from 30 years ago” and that its obscurity next to XSLT “is as much as anything else because of the high cost of acquiring it.” The language the encyclopedia lists as dormant is better described as a maintained proprietary product with a small, loyal, mostly publishing-industry user base.

History and origins

Sam Wilmott, HUGO and Exoterica (1970s-1988)

Sam Wilmott “designed his first programming language in the winter of 1967-1968 and was using early non-standardized markup languages in the late 1960’s.” In the 1970s he led the development of typesetting and text-formatting systems for the Canadian Government Printing Office, where he designed and helped implement HUGO, “a text processing and electronic publishing language”; in the 1980s he did similar work for a large real-estate company, and along the way he implemented what he describes as “one of the first SGML parsers (which was also the first pull-model markup parser).” OmniMark, he wrote in 2019, has “syntax, processing model and text processing capabilities” that “are based on the HUGO language” - which is why, by then, its style struck him as “more like 40 years old” than 30.

The commercial vehicle was Exoterica Corporation of Ottawa, whose president was John McFadden. The company’s earliest visible product is an SGML toolkit: the 1988 paper “SGML-based markup for literary texts: Two problems and some solutions” in Computers and the Humanities, co-authored by McFadden with David Barnard, Ron Hayter, Maria Karababa and George Logan, cites “Software Exoterica Corporation. XGML Application Developer’s Manual… 1988.” Wikipedia, citing page vii of Brian Travis’s 1997 book, records that OmniMark “was originally created in the 1980s by Exoterica… as a SGML processing program called XTRAN,” later renamed. That is why every OmniMark manual from the 1997 Version 3 guide to the 2026 Version 13 documentation opens its copyright at 1988.

The first OmniMark (c. 1989-1993)

When exactly XTRAN became OmniMark is not documented in public sources. OmniMark Technologies’ 1999 press release said the language “was first introduced 10 years ago,” Wilmott’s biography places his origination of it “in the early 1990’s,” and his 2012 Balisage paper describes the SGML parser at its core as “in use for over twenty years.” The machine it was built on tells its own story: “when OmniMark was first designed and implemented, the largest machine in the office was a 2 megabyte memory desktop Macintosh.” A streaming design that never holds the whole document was a necessity before it was a philosophy.

By 1993 OmniMark was an established SGML tool. The Kuopio technical report on SGML software lists it from Exoterica Corp. at 1545 Carling Avenue, Ottawa, with a French office at Issy-les-Moulineaux, as “a programming language specialized in text processing, including SGML texts” - “data/event driven,” recognising elements by their parent-child context, with its own SGML parser and versions for MS-DOS, Windows, Unix, Macintosh, OS/2, DEC VMS and IBM CMS/MVS. When Electronic Book Technologies announced the Rainbow DTD at SGML ‘93 in Boston on 8 December 1993, the vendors it lined up in support were ArborText, SoftQuad and “John McFadden, President of Exoterica, which develops and markets OmniMark, a specialized SGML text-manipulation language.” The same year, according to Michael Popham’s report on SGML ‘93, Exoterica released its Compleat SGML CD-ROM of SGML reference material, with a conformance-suite CD-ROM promised for 1994.

The conversion engine of the SGML decade (1993-1998)

OmniMark’s territory was conversion: “up-translation” from word-processor and typesetting files into valid SGML, “down-translation” from SGML into print, CD-ROM and, from 1994, HTML, and “cross-translation” between formats. François Chahuneau’s 1994 survey of up-translation approaches treats OmniMark’s explicit pattern matching as one of the main techniques of the field. The best-documented deployment is OCLC’s STEPS system for the ACM’s journals, where OmniMark programs turned RTF exported from authors’ word processors into SGML conforming to ACM’s DTD; “ACM specified use of OMNIMARK where applicable.”

The company renamed itself OmniMark Technologies Corporation around 1995-96 - the Cover Pages database lists it as “formerly Exoterica Corporation,” and it reportedly appears under the new name in the February 1996 Branham 200 ranking of Canadian software companies. Its Version 3 Programmer’s Guide (release 2, 11 April 1997) is the earliest documentation still online, and its credits fix the authorship: “Product Concept: John McFadden and Sam Wilmott. Language Design and Specification: Sam Wilmott.” Version 3 introduced the => operator for binding pattern variables, replacing an overloaded =. Two books appeared - Travis’s OmniMark at Work: Getting Started (1997) and Norman Smith’s Practical Guide to SGML/XML Filters (1998).

Free OmniMark and the web (1999-2000)

XML arrived in 1998, and with it XSLT and a flood of free tools. OmniMark Technologies responded on 17 May 1999, at its Developers Conference in New Orleans, by making OmniMark 5 free. “A high level language, OmniMark is a clear alternative to Perl for developing server-based web or network applications and CGI scripts without having to make the leap to Java,” the press release said; McFadden told the mailing list that “free means free” - the interpreter (renamed OmniMark C/VM), the byte-code virtual machine and a Home and School IDE cost nothing, while the Windows Developer IDE (US$995) and the OmniMark C byte-code compiler for Unix (US$2,995, still bound to a machine by FlexLM) were the company’s only remaining revenue. “OmniMark 5 is mind bending. We hope you enjoy it. It costs a heck of a lot less than Perl!”

Version 5 was a substantial language: catch and throw, nested pattern matching on #current-input, pattern-matching functions, a #! directive for CGI scripts, and database, CGI and OMX component libraries; 5.2 added UTF-8 and case-sensitive XML parsing and HTML 4.0 support, 5.3 removed the type heralds and added integer, int32 and BCD types and an LDAP library, and 5.4 added parsing of well-formed XML without a DTD. Mark Baker’s Internet Programming with OmniMark (Kluwer, 31 October 2000) - hit counters, form handlers, “XML middleware” - was written for this audience. The free period was short: Rosetta Code notes that “for a brief period, in 1999-2000, OmniMark was available free of charge (versions 4 and 5, including a ‘Lite edition’ of version 4, which was limited to 200 actions),” and Wikipedia adds that “OmniMark is no longer distributed under such a model.”

Stilo (2001-)

In April 2001 OmniMark Technologies was acquired by Stilo Technology, an AIM-quoted UK company. Stilo had begun as Stilo Associates, “established in 1992 as a partnership bringing together skills in scientific publishing, project management and software development” to build STILO, an SGML editing and viewing package; Stilo Technology Ltd was incorporated on 2 October 1995, and the group floated as Stilo International plc in 2000. Corum Group, which advised OmniMark, describes the target as an Ottawa company that “develops and markets software used to process and transform non XML data into XML format, and XML data into other formats.” The Ottawa office became Stilo Corporation and the development home of the language; the documentation copyright switches from OmniMark Technologies (2002) to Stilo Corporation (2005) to Stilo International plc (2008-2019).

Under Stilo the language went through its biggest changes. OmniMark 6 (6.5 documentation dated 23 December 2002) added the ** and ++ occurrence operators, repeat for and repeat to, take and drop, assert, and W3C Schema validation through an external-parser interface. OmniMark 7 (7.1.2 documentation 28 June 2005) introduced modules, constants, records, overloaded and infix functions, filter and input functions, an XSLT library, a Web Services Broker and the OmniMark Studio for Eclipse IDE, and split the product into a compiler and a VM engine running platform-independent .xvc files. OmniMark 8 (beta 1 documented 5 October 2005; 8.2 in March 2008) replaced stream with string, turned input functions into coroutines - string source and string sink functions with signal throw - and added the Sedna XML database with XQuery. OmniMark 9 (9.1.0, August 2010) added markup-event streaming; OmniMark 10 (April 2012) made DTDs first-class values and added a Java VM; 10.1.x releases followed in 2013, 2014 and 2016.

Stilo International plc left AIM on 8 October 2019 after a buyback and tender offer, and re-registered as a private company; OmniMark 11 was announced on 25 November 2019 with 64-bit Windows and RHEL 6-8 support. On 15 February 2023 the Ottawa management - CEO Bryan Tipper and CTO Jackson Klein - bought Stilo Corporation outright, and OmniMark 12 followed within weeks. OmniMark 13 shipped in May 2026.

Design philosophy

OmniMark’s Beginner’s Guide (Stilo, 2004) opens with the sentence that defines it: “OmniMark is a streaming programming language. As a starting point, you can think of OmniMark as either a rule-based language or an event-based language.” The comparison it draws is with GUI programming - programs are “a collection of responses to events,” but “the events an OmniMark program responds to are not user events or hardware events, but data events,” and “Who decides what is an event in a stream of data? You do.”

  • Data flows; the program does not hold it. OmniMark “treats input as a flow that can be scanned once, rather than as a static collection of data that supports random access.” There is always a current input and a current output; rules apply to the current input without being told to, and output goes to the current output. Memory use is bounded by what the program chooses to keep in variables, not by document size - the reason a 2 MB Macintosh could process books.
  • Rules, not control flow. A program is a set of process, find, element, translate, document-start, document-end and markup-error rules. Order matters only when two rules could match the same event, in which case the first wins and “eats” the text.
  • The parser is in the language. SGML and XML parsing is not a library call but the engine that drives element rules. The parser maintains the element stack, supplies attribute values, infers omitted SGML tags, and hands content to the rule through %c - which the rule may output, scan with patterns, or suppress.
  • Patterns in English. Where Perl writes /\$(\d+)\.(\d{2})/, OmniMark writes "$" digit+ => dollars "." digit{2} => cents. On his own website Wilmott credits Icon’s style of pattern - itself a development of SNOBOL4’s - as the inspiration for OmniMark’s; the goal was patterns that can be read aloud and composed without escaping.
  • Generic handling first. element #implied catches any element without a rule of its own, so “much of a document can be handled by a well-designed generic action” and a program is “very tolerant of changes in the structure of the input document.”
  • Correctness over speed of writing. Static types, explicit format conversions, the assert action (from version 6), compiler warning classes (7.1) and a runtime that reports a function-call stack trace (8.2) reflect a language sold to organisations converting millions of pages who need conversions to be right.

Key features

Find rules: unstructured text

; Change prices from English to French format
process
   submit file "prices.txt"

find "$" digit+ => dollars "." digit{2} => cents
   output dollars || "," || cents || "$"

submit feeds a stream to the find rules; whatever the rules do not consume is copied to the output unchanged. => binds the matched text to a pattern variable, || concatenates, and %n in a string is a newline. The classic word counter from the Beginner’s Guide needs one rule:

global counter wordcount initial {0}

process
   submit "Mary had a little lamb"
   output "d" format wordcount || "%n"

find letter+
   increment wordcount

Element rules: XML and SGML

; List first- and second-level headings from an XHTML file
process
   do xml-parse
      scan file "example.html"
      output "%c"
   done

element "head"
   suppress

element "h1"
   output "%c" || "%n"

element "h2"
   output "  " || "%c" || "%n"

element #implied
   do when parent is "body"
      suppress
   else
      output "%c"
   done

An element rule “gets control just after the start tag has been parsed,” asks the parser for the content with %c, and gets control again at the end tag - so nested elements are handled by nested rule activations, each with the whole ancestor stack available (parent is, element is, attribute, content is (empty | conref)). do sgml-parse document does the same with a DTD and full SGML tag inference, which is how OmniMark could turn terse SGML with omitted tags into explicit XML. translate rules act on text before it reaches the parser (the standard example is translate "&" output "&"), and repeat scan "%c" ... match ... again applies patterns to parsed content.

Shelves, streams and referents

Variables live on shelves - arrays of one type addressed by index or key (global counter tally variable, tally{"total"}). Output is directed with using output as and open ... as buffer/as file; referents let a program emit a placeholder now and fill it later, the way a table of contents needs page numbers that are not yet known - a device from the typesetting world OmniMark came from.

The later language

VersionAddition
5 (1999)catch/throw, #current-input, pattern functions, CGI #!, database/CGI libraries
5.3 (c. 2000)Type heralds dropped (counter x became integer x); BCD arithmetic
6 (2001-02)**/++ occurrence operators, repeat for/repeat to, take/drop, assert
7 (2003-05)Modules, constants, records (7.1), overloaded and infix functions, filter functions, XSLT and MQSeries libraries, Studio for Eclipse, .xvc VM
8 (2005-08)string type, string source/string sink coroutines, Sedna/XQuery, OMPROCESS
9 (2010)Markup-event streaming, OMXMLWRITE/OMSGMLWRITE
10 (2012)First-class DTDs, OASIS catalogs, Java VM
11 (2019)Abstract records, document-type-declaration rule, beta XML Schema and regex libraries
12-13 (2023, 2026)Platform and library modernisation

Compiled programs are byte code (.xvc) that the VM runs unchanged on any supported platform; the product has shipped as a Desktop Compiler, a Single Processing VM, a Concurrent Processing Engine and, from version 10, a Java VM class (JOmniVM). Stilo currently lists Windows and Linux/UNIX platforms, with version 13 covering RHEL 10, Amazon Linux 2023, Ubuntu 22.04/24.04 and Windows Server 2022/2025.

Evolution

Stilo’s own 2017 guide to migrating legacy programs summarises the arc: OmniMark “started out as a very simple rule-based SGML scripting language” and became “a general-purpose programming language with modern software-engineering features,” while keeping backward compatibility to the point that programs written in the version 2 style still run with modest changes. The documentation still ships a “Backwards Compatibility” page tracing changes since version 2, and the four “aided translation types” of the early language - up-translate, down-translate, cross-translate and context-translate - are now deprecated in favour of process rules with explicit parsing, because the rigid forms “cannot always be extended to handle new requirements, without polluting the existing (working!) program.”

The other axis of evolution is what it parses: SGML from the start, XML from version 5 (well-formed XML in 5.4, W3C Schema via external parsers in 6.5, namespaces in 7), RTF via the OMRTF library (7.1), and, as Wilmott notes, “more recently, JSON.”

Current relevance

OmniMark is alive as a product and quiet as a language. Stilo Corporation, Canadian-owned since the 2023 buyout, released OmniMark 13 on 12 May 2026 - platform updates, curl 8.19.0, host libcurl and LDAP on Linux, better schema error reporting - and continues to sell licences with a 60-day evaluation, annual maintenance, and a “migrating legacy OmniMark programs” service for customers with decades-old code. Its Migrate conversion service uses OmniMark “under the hood.” Customers named by Stilo include Airbus, Embraer, the European Parliament, IBM, Thomson Reuters, Wolters Kluwer and Pitney Bowes.

Outside that circle the footprint is small: about twenty Rosetta Code tasks, an Emacs omnimark-mode on SourceForge, Wikipedia’s article, and the Balisage papers. There is no free implementation, no package on any public registry and no Docker image; the language’s future is tied to one company. Wilmott, after “leaving OmniMark,” worked on an XSLT compiler in the early 2000s, and his 2019 “Beyond OmniMark” paper proposes Bobbee, a new language for markup and text processing that would keep OmniMark’s strengths without its age.

Why it matters

OmniMark is the language in which a great deal of the world’s SGML - and therefore the first generation of structured publishing, from ACM’s journals to defence technical manuals to parliamentary records - was made and unmade. Three of its ideas deserve remembering. The first is streaming: treating a document as a flow of events, with the parser driving the program, a decade before SAX and two decades before streaming XSLT 3.0 - and doing so on 2 MB machines because there was no alternative. The second is the rule as unit of program, with generic #implied handling so that a converter degrades gracefully when the input’s structure changes; the fragility of hand-written conversions is exactly what this design attacks. The third is readable patterns: digit+ => dollars, letter*, any except "$" - a serious attempt, following Icon, to give text processing a notation that people who are not programmers can read.

That it never became the Perl alternative its owners hoped for in 1999 says more about pricing and timing than about design; Wilmott’s own diagnosis was cost, and the free XSLT that arrived the same year handled the XML half of the job well enough for most. But XSLT “only supports input in XML and is somewhat weak in its text processing features,” and the messy half - RTF, typesetting codes, word-processor exports, SGML with omitted tags - is where OmniMark still earns its keep, thirty-eight years after the first copyright notice.

Timeline

1988
The earliest date in OmniMark's record: every manual since carries a copyright notice beginning in 1988, and 'Software Exoterica Corporation' publishes an 'XGML Application Developer's Manual', cited that year in Computers and the Humanities 22(4) by David Barnard, Ron Hayter, Maria Karababa, George Logan and John McFadden in 'SGML-based markup for literary texts: Two problems and some solutions'. Exoterica's SGML processing program is at first called XTRAN
1990
Approximate first appearance of the OmniMark name and product. OmniMark Technologies' 1999 announcement said the language 'was first introduced 10 years ago', and Sam Wilmott - who had implemented 'one of the first SGML parsers (which was also the first pull-model markup parser)' - describes himself as 'the originator of the OmniMark programming language (in the early 1990's)'. He later recalled that 'when OmniMark was first designed and implemented, the largest machine in the office was a 2 megabyte memory desktop Macintosh'
1993
The Kuopio technical report on SGML tools lists OmniMark from Exoterica Corp., 1545 Carling Avenue, Ottawa (with a Paris-area office), as a 'data/event driven' text-processing language with its own SGML parser for MS-DOS, Windows, Unix, Macintosh, OS/2, DEC VMS and IBM CMS/MVS. On 8 December, at SGML '93 in Boston, Electronic Book Technologies announces the Rainbow DTD for word-processor-to-SGML conversion, quoting John McFadden, 'President of Exoterica, which develops and markets OmniMark, a specialized SGML text-manipulation language'
1994
OCLC's Office of Research builds the document-conversion component of its STEPS electronic publishing system for the Association for Computing Machinery around OmniMark: authors' WordPerfect, Word, FrameMaker and LaTeX files are converted to RTF and then, by OmniMark programs, to SGML conforming to ACM's DTD - 'ACM specified use of OMNIMARK where applicable in the conversion processes'. A December 1994 tools list describes OmniMark as 'a commercial combined document validation and format conversion tool, which converts RTF to HTML, and also SGML to HTML'
1997
The company is now OmniMark Technologies Corporation ('formerly Exoterica Corporation' in the Cover Pages database, and reportedly listed under the new name in the February 1996 Branham 200 ranking of Canadian software companies). Its Version 3 Programmer's Guide (release 2, 11 April 1997) credits Wilmott with 'Language Design and Specification' and McFadden and Wilmott with the 'Product Concept'; version 3 introduced the => operator for binding pattern variables. Brian Travis and colleagues publish 'OmniMark at Work: Getting Started' (SGML University Press), and Norman Smith's 'Practical Guide to SGML/XML Filters' (Wordware, 1998) follows
1999
OmniMark 4 documentation is generated on 21 April, and on 17 May, at the OmniMark Developers Conference in New Orleans, McFadden announces that 'OmniMark 5 Programming Language is Free' - 'a clear alternative to Perl for developing server-based web or network applications and CGI scripts'. The interpreter (OmniMark C/VM), the byte-code virtual machine and a Home and School IDE are free; the Windows Developer IDE costs US$995 and the OmniMark C byte-code compiler US$2,995. Version 5 brings catch and throw, #current-input nested pattern matching, the #! CGI directive, and database, CGI and OMX component libraries; 5.2 adds UTF-8 and case-sensitive XML parsing, 5.3 drops type heralds and adds BCD arithmetic, 5.4 adds well-formed (DTD-less) XML parsing
2000
Mark Baker's 'Internet Programming with OmniMark' is published by Kluwer Academic Publishers on 31 October (391 pages), covering the core language and CGI, server and XML middleware examples. The free-of-charge period ends around this time; Rosetta Code records that 'for a brief period, in 1999-2000, OmniMark was available free of charge (versions 4 and 5, including a Lite edition of version 4, which was limited to 200 actions)'
2001
In April, Stilo Technology - the AIM-quoted UK XML software company that had grown out of Stilo Associates (a partnership 'established in 1992' to build an SGML editor; Stilo Technology Ltd incorporated 2 October 1995; Stilo International plc floated in 2000) - acquires OmniMark Technologies of Ottawa, which 'develops and markets software used to process and transform non XML data into XML format, and XML data into other formats'. Corum Group advised OmniMark; the price was not disclosed. Ottawa becomes Stilo's development centre
2002
OmniMark 6 - with the ** and ++ pattern occurrence operators, repeat for / repeat to loops, take and drop, assert, dynamic variable initialisation and a Studio IDE - reaches 6.5 (documentation generated 23 December 2002), adding W3C XML Schema validation through an external-parser interface, the omxerces library and Red Hat 8 support
2005
OmniMark 7 (7.1.2 documentation dated 28 June 2005) has turned the rule language into a modular one: modules, constants, records, overloaded and infix functions, filter and input functions, the omxslt XSLT library, an MQSeries library, a Web Services Broker, the OmniMark Studio for Eclipse cross-platform IDE and a separate VM engine for compiled .xvc files. On 5 October the OmniMark 8.0 beta 1 documentation for the 'Concurrent Processing Engine VM' - 'a programmable streaming content transformation engine' - appears
2008
OmniMark 8.2 (documentation 13 March 2008): version 8 replaced stream with the string type, generalised input functions into coroutines (string source and string sink functions, with signal throw for coroutines in 8.2), added an OMDB_SEDNA extension for the Sedna native XML database with XQuery, Oracle 9i/10g support and the OMPROCESS library for running external programs
2010
OmniMark 9 (9.1.0 documentation 31 August 2010) introduces markup event streaming - the #current-markup-event variable and #markup-start/#markup-end/#markup-point catches let rules reproduce and filter a markup stream - together with the OMXMLWRITE library and a beta OMSGMLWRITE serialiser. Stilo's later developer site still recommends the upgrade to 9 for this capability
2012
OmniMark 10.0.0 (documentation generated in April 2012, according to Stilo's documentation index) makes DTDs first-class values (sgml-dtd, xml-dtd and dtd types with declared-elements of and create-element-declaration), adds the OMOASISCATALOGS library for OASIS catalogs and an OmniMark Java VM (the JOmniVM class) that runs compiled programs inside Java applications on Windows, Linux, Solaris and AIX. In August, at Balisage 2012 in Montreal, Wilmott presents 'Literate Programming: A Case Study and Observations', built on OmniMark's SGML parser - itself written as an SGML document and 'in use for over twenty years'. 10.1.0 follows on 19 March 2013, 10.1.1 on 9 June 2014 and 10.1.2 on 1 April 2016
2019
At Balisage 2019 (30 July - 2 August) Wilmott's paper 'Beyond OmniMark' judges that 'OmniMark's basic design and most useful features date from 30 years ago' and that its 'unpopularity relative to XSLT, in spite of its wider application uses, is as much as anything else because of the high cost of acquiring it', and proposes a successor language, Bobbee. Stilo International plc announces a buyback and tender offer on 23 August, leaves AIM on 8 October and re-registers as a private company (6 November). On 25 November Stilo announces OmniMark v11: 64-bit Windows 10 and Windows Server 2016/2019, Red Hat Enterprise Linux 6-8, abstract record types, a document-type-declaration rule, beta W3C XML Schema, regular-expression and SGML-serialisation libraries, and removal of the Oracle libraries
2023
On 15 February CEO Bryan Tipper and CTO Jackson Klein buy 100% of Stilo Corporation, the Ottawa subsidiary, from Stilo International, taking OmniMark, Migrate, OptimizeR and Analyzer into a 'Canadian-owned private company' at 440 Laurier Avenue West. OmniMark 12 (documentation 31 January; announced 24 February and by press release 1 March) adds Amazon Linux 2, Windows 11 and Red Hat Enterprise Linux 9 support and fixes the reversed byte-order marks in the OMFFUTF16 library
2026
OmniMark v13 (documentation 1 May; announced 12 May) adds Red Hat Enterprise Linux 10, Amazon Linux 2023, Ubuntu 22.04 and 24.04, and Windows Server 2022 and 2025; updates the bundled curl on Windows from 7.65.3 to 8.19.0 and moves the Linux builds to the host libcurl and LDAP libraries; and makes the omxmlschema library report, rather than silently ignore, a schema that fails to compile

Notable Uses & Legacy

ACM journals via OCLC STEPS

In the mid-1990s OCLC's Office of Research built the capture-and-conversion component of its STEPS electronic publishing system for the Association for Computing Machinery around OmniMark: accepted articles in WordPerfect, Word, FrameMaker and LaTeX were converted to RTF by their word processors and then, by 'Exoterica Corporation's OMNIMARK programming language', into SGML conforming to ACM's DTD, with authors pre-tagging 26 major structures to make the up-translation tractable. 'ACM specified use of OMNIMARK where applicable in the conversion processes'

European Parliament and other Stilo customers

Stilo's interim results for the first half of 2016 reported 'significant OmniMark software orders received from Toshiba Solutions (Japan) and the European Parliament' and an increase in OmniMark sales; its 2017 interims named Boeing, Pratt and Whitney, EADS, Thomson Publishing and Wolters Kluwer as users, and its current product page lists Airbus, Embraer, the European Parliament, IBM, Thomson Reuters, Wolters Kluwer and Pitney Bowes among users of its content-conversion pipelines. Two decades earlier, OmniMark Technologies said Boeing, IBM, Nokia Telecommunications, Airborne Express and Underwriters Laboratories were represented at its 1999 developers conference

Stilo Migrate

Stilo's cloud service for converting FrameMaker, InDesign, Word, RoboHelp, DocBook and other legacy content to DITA and custom XML runs OmniMark 'under the hood', bringing 'the power of OmniMark into play for the analysis and processing of complex content, while shielding its complexity from non-technical users'; by 2014 Stilo reported more than 400,000 legacy pages converted to DITA through it for customers including IBM Sterling Commerce, Cisco and Oracle. Migrate 5.0 was announced on 3 April 2023

UK Ministry of Defence publication conversion

Consultant Graham Every 'provided setup scripts and ongoing support for a UK MoD project' converting a range of MoD publications from a legacy format into XML: exported files were transformed into a single valid SGML file per volume conforming to the target MoD DTD, and 'these tasks were performed using OmniMark' - a typical example of the SGML-era conversion work in defence, aerospace and publishing that kept the language in service

Language Influence

Influenced By

HUGO SGML Icon

Influenced

Bobbee

Running Today

Run examples using the official Docker image:

docker pull
Last updated: