AtomicML - The Atomic Markup Language
The Atomic Markup Language

AtomicML is a markup language whose documents are 20-50% smaller than XML and whose parsers typically fit in one page of code.

AtomicML uses indentation and line breaks (much like Python does) to denote structural changes. Much smaller than competing languages, the AtomicML grammar is expressed on one line:

atomic ::=  ((INDENT LABEL NEWLINE atomic DEDENT) | BLANK)*

INDENT is zero or more line-leading spaces (and tabs) followed by a LABEL (tabs indent to the next multiple of eight spaces). LABEL is a non-whitespace character followed by zero or more non-newline characters. NEWLINE is the platform-defined newline character or character sequence. A DEDENT is generated when the indentation of the previous line is more than the current one. Finally, BLANK is a line that contains nothing but whitespace (or end-of-file marker) . A central benefit of this grammar is that all finite strings are in the language of AtomicML.

AtomicStyle is implemented by recursively visiting the node tree and at each node calling a method whose name matches the leading non-whitespace characters of each LABEL in the Atomic document.

Download Source
Platform Download Version Link (right-click, Save Link As...)
Python Atomic and AtomicStyle 1.4 Atomic.py
Java Atomic and AtomicStyle 1.4 atomic-1.4-src.jar
Related Whitepapers
  • Kipp, Neill A., "AtomicML: An Extremely Usable Markup Language," Proceedings of Extreme Markup 2000, Graphic Communications Association, August 2000.
  • Kipp, Neill A., "Introducing AtomicML," XML One Conference, Austin, TX March 2000.
  • Kipp, Neill A., "AtomicML: A Lightweight Alternative to XML for Metadata," 1999.
  • Kipp, Neill A. and Sam Hunting, "Slashing Brambles and Sating Digital Hunger," Proceedings of Extreme Markup 2003, IDEAlliance, 2003. (PDF)
  • More links coming soon...
Licensed under Apache License 2.0

Copyright © 2000, 2003, 2008, Kipp Software Corporation. Licensed under the Apache License, Version 2.0 (the "License"); you may not use AtomicML except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 [local copy]

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.