---
description: >-
  ODL, which stands for Onwebed Document Language, is a markup language which
  defines documents (essentially pages). It's an alternative to the visual
  editing method.
---

# ODL

## Introduction

The conventional way to create content of pages is to use the visual way for creating/editing boxes. Moreover, there are times when visual editing isn't efficient, that's when a markup language comes into play. Ladies and gentlemen, I present to you Onwebed Document Language, aka ODL!

With ODL, you can define everything you could have done in a visual way. The concept behind ODL is simple, it lets you define boxes, that's it!

## Solid Box

Solid boxes in ODL are defined using the starting and ending tags, `<!` and `!>` respectively.

Inside it, the label (optional) may be defined using the starting and ending tags, `[` and `]` respectively. The content is anything that follows the label (if it exists).

Examples:

```
<! !>
```

Above, the ODL represents an empty solid box with no label.

```
<! [ div ] !>
```

Above, the ODL code represents an empty solid box with the label, `div`.

```
<! [ div ]
    <! [ span ] !>
    
    <! [ span ] !>
!>
```

Above, we got a solid box just like the previous example; however, inside this one, we got two solid boxes, both having the label of `span`.

## Liquid Box

Liquid boxes in ODL are defined using the starting and ending tags, `[!` and `!]` respectively.

Inside it, the label (optional) may be defined, just like solid boxes, using the starting and ending tags, `[` and `]` respectively. The content is anything that follows the label (if it exists).

Examples:

```
[! Hello World !]
```

Above, we got a liquid box with no label, holding the text "Hello World".

```
[! [ span ] Hello World !]
```

Above, we got a liquid box with text "Hello World" just like that in the previous example, but this time it has a label, `span`.

## Formatting

Formatting is extremely important in ODL. Consider the following points:

* ODL is whitespace-sensitive. There is difference between putting inappropriate spacing and appropriate spacing.
* The starting and ending tags of label, solid box, and liquid box should be separated from anything else (label, plain-text, another starting/ending tag, etc) using a white-space.
* White-spaces in plain-text will be preserved, feel free to format it any way you prefer.
