h1. First testpage

h2. Paragraphs

This is the first paragraph with
a line break. It contains *bold*, _italic_, *_bold italic_*, +underline+, {{monospace1}}, -strike\-through-, ^superscript^ and ~subscript~ text.

{code}
monospace2
{code}

The second paragraph has some links: First we have internal wiki links like [TracGuide], [TracWiki] and to an [^Attached_File.pdf]. Links can be given a more descriptive title by writing the link followed by a space and a title and all this inside square brackets, like in [Trac Overview|TracOverview]. Links can be avoided by EscapingWikiNames.

Of course, there can also be external links. URLs like http://www.google.com/search?q=Confluence are automatically linked but they can also be put inside square brackets: [http://www.google.de/search?hl=de&q=Confluence+Trac+importer&btnG=Suche&meta=], even with titles like [Google search for "trac export"|http://www.google.de/search?hl=de&q=trac+export&btnG=Suche&meta=]. We add some [relative links|#Relativelinks] and [links to|SubWikiPage] [SubPages] just for fun.

bq. This text is a quote from someone else, rendered as blockquote.
  
Finally, we have a text with characters that are special in Confluence: Exclamation marks\!\!\! are used to embed \!images\!, curly braces {{ for \{macros}.

Test to make sure that possible markup inside a paragraph is not touched: == test ==  *     **   1. 

h2. Special Formatting (taken from WikiFormatting)

h3. Lists (headlines may have a leading space)

* Item 1
** Item 1.1
*** Item 1.1.1   
*** Item 1.1.2
*** Item 1.1.3
** Item 1.2
* Item 2

# Item 1
# Item 2
# Item 3

h3. Preformatted text

Blocks containing preformatted text are suitable for source code snippets, notes and examples. Use three curly braces wrapped around the text to define a block quote. The curly braces need to be on a separate line. Example: 
{noformat}
<?xml version='1.0' encoding='utf-8'?>
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">

  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
{noformat}
{noformat}
 {{{
  A nested code block
 }}}
{noformat}
{noformat}
 Formatting must not be converted in preformatted text:
 '''bold''', ''italic'', '''''bold italic''''', __underline__, {{{monospace1}}},
 `monospace2`, ~~strike-through~~, ^superscript^, ,,subscript,,
{noformat}

h3. Tables

First table:
|^Cell 1^|*Cell 2*|Cell 3|
|Cell 4|Cell 5|Cell 6|

Second table with spaces:
| http://www.atlassian.com/ | [TracGuide] | +underline+ |

h3. Images

Embed attached images: !myImage.png!, also from different wiki pages: !WikiFormatting^picture.gif!, !WikiToc^toc.gif!

h3. header with leading space
testing 123 

h3. another header with leading space
testing 123 

h3. header with no closing space
testing 123

