Projects // TieML

Where Business truly meets XML

The Extensible Markup Language (XML) is a general-purpose "specification" for creating custom markup languages. It is often said to be a markup language itself, which is incorrect. It is classified as an extensible language because it allows its users to define their own elements. Its primary purpose is to help information systems share structured data, particularly via the Internet. XML has been widely adopted in the business world, for example XBRL (eXtensible Business Reporting Language) based on XML is widely used in financial world. The "standard" described here will - tadaa! - close eventual gaps in making XML the primary choice for all business needs: It's time for the Tie Markup Language! For instance, the XML below describes the "Four in Hand":

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE tieml SYSTEM "tie-ml.dtd">

        <sequence dimension="4" centercount="1" symmetry="1" balance="1" state="n">
            <entry direction="L" seam="inwards"></entry>
            <entry direction="R" seam="outwards"></entry>
            <entry direction="L" seam="inwards"></entry>
            <entry direction="Z" seam="outwards"></entry>
            <entry direction="T"></entry>

The following Document Type Definition (DTD) describes a TieML document:

XML document type definition (DTD) for TieML.

Version: 1.0
Date:    2001/05/08
Author:  Markus Nix []
File:    tie-ml.dtd

The TieML DTD is identified by the PUBLIC and SYSTEM identifiers:

PUBLIC	"-//MarkusNix//DTD TieML 1.0//EN"

The TieML specification might include additional syntastic constraints
that cannot be expressed within the DTD.

< !ENTITY % data.boolean "(false|true)">
< !ENTITY % data.integer "CDATA">
< !ENTITY % data.string  "CDATA">

< !ELEMENT tieml (tie)>

< !ELEMENT tie (name,description,sequence)>
< !ELEMENT name (#PCDATA)>
< !ELEMENT description (#PCDATA)>

< !ELEMENT sequence (entry)*>
< !ATTLIST sequence
    dimension   %data.integer;      #REQUIRED
    centercount %data.integer;      #REQUIRED
    symmetry    %data.integer;      #REQUIRED
    balance     %data.integer;      #REQUIRED
    state       %data.string;       #REQUIRED

< !ELEMENT entry (#PCDATA)>
< !ATTLIST entry
    direction   (L|R|Z|T)           #REQUIRED
    seam        (inwards|outwards)  #IMPLIED