XWiki Rendering Framework

Version 54.1 by Ecaterina Moraru (Valica) on 2017/09/04 13:46

Mission: Transform some textual input content in a given syntax into an output content in another syntax.

General Architecture

rendering-architecture-simple.png

  • XDOM: A Java object representing the input as a tree made of Java Block objects (a.k. as an AST).
  • Parser: Parses some textual input in a given syntax and generate a XDOM object.
  • Renderer: Takes a XDOM as input and generates some output.
  • Transformation: Takes some XDOM and modifies it to generate a modified XDOM.

See Advanced Architecture for more details.

Features

  • Parsers for multiple syntaxes.
  • Offers both a streaming API (useful for rendering large content) and an XDOM-based API (generates an intermediary AST on which transformations - such as macros - can be applied)
  • Round trip between XWiki Syntax 2.0 and XHTML. This features allows for example to have a strong WYSIWYG editor that doesn't loose information when editing wiki pages. Another use case is the ability to import Office documents in HTML and transform them into XWiki Syntax 2.0 without loosing information.
  • Ability to get the result of the parsing as an AST tree (called XDOM) which can then be used to get access to all structured elements from the flat text input.
  • Ability to transform the XDOM through a Transformation (list of of available Transformations).
  • Macro support (list of available Macros). Note that Macro support is implemented as a Transformation (see Architecture).
  • Supports wiki syntax in link labels even for input syntaxes that don't support it.
  • Automatic conversion from any of the supported input syntaxes to XWiki Syntax 2.0 or to XHTML.
  • Strong Parsers:
    • Based on Grammars (JavaCC)
    • Fix user mistakes (not closed or overlapping markup elements...).
    • Each block element (paragraph, table cells, list items, headers...) can spread over multiply lines.
    • Support for groups, i.e. ability to include content inside other content (equivalent of DIV in HTML).
    • All elements can have parameters associated to them.
  • Been used in XWiki Enteprise for several years and is stable and performant.
  • Can be used standalone since it's independent of other XWiki projects such as XWiki Platform, etc.

The XWiki Rendering modules are all released under the LGPL license.

Supported Syntaxes

Input Syntax
It means there's a Parser that can be used to parse this syntax into a XDOM object
Output Syntax
It means there's a Renderer that can be used to render an XDOM into this syntax
NameIdInput Syntax?Output Syntax?Description
XWiki 2.0xwiki/2.0acceptaccept 
XWiki 2.1xwiki/2.1acceptacceptExperimental at this stage which means it can still change before it's released as final.
XHTML 1.0xhtml/1.0acceptaccept 
HTML 5.0html/5.0cancelacceptAvailable in XWiki Rendering 6.4+ only.
HTML 4.01html/4.01acceptaccept 
Plain Textplain/1.0acceptacceptPrint all than can be rendered in a simple notepad-like editor such as words, special symbols and spaces. It also generates link labels for links that have no labels and print the generated labels. Last it provides very basic formatting (e.g. separates paragraphs with new lines and separates list items with new lines).
DocBook 4.4docbook/4.4acceptacceptAvailable in XWiki Rendering 3.2+ only.
XDOM XML Currentxdom+xml/curentacceptacceptAvailable in XWiki Rendering 3.3+ only.
XDOM XML 1.0xdom+xml/1.0acceptacceptAvailable in XWiki Rendering 3.3+ only.
XWiki 1.0xwiki/1.0acceptcancel 
Confluence 1.0confluence/1.0acceptcancelRemoved in 9.0. Should use 1.1 instead. See Confluence.
Confluence 1.1confluence/1.1acceptcancelMoved to contrib in 9.0. See Confluence.
Confluence XHTMLconfluence+xhtml/1.0acceptcancelMoved to contrib in 9.0. See Confluence.
JSPWikijspwiki/1.0acceptcancel 
TWikitwiki/1.0acceptcancel 
MediaWiki 1.0mediawiki/1.0acceptcancelDeprecated and moved to MediaWiki contrib project in  8.2RC1 
MediaWiki 1.6mediawiki/1.6acceptcancelComes with the new MediaWiki contrib project
Creole 1.0creole/1.0acceptcancel 
Markdown 1.0markdown/1.0acceptacceptExtracted out of XWiki starting 8.2M1. Output syntax supported starting with version 8.2 of the Markdown module.
Markdown 1.1markdown/1.1acceptacceptExtracted out of XWiki starting 8.2M1. Adds syntax for macros, superscript and subscript support over Markdown 1.0 syntax. Output syntax supported starting with version 8.2 of the Markdown module.
Markdown 1.2markdown/1.2acceptacceptAdded in version 8.4 of the Markdown module.
APTapt/1.0acceptacceptAvailable in XWiki Rendering 4.3+ only.
DokuWiki 1.0dokuwiki/1.0acceptcancelComes with the new DokuWiki contrib project

Demo

Documentation

Download

Check the getting started tutorial which contains all information to access the XWiki Rendering binaries.

Source files are available here.

Projects using XWiki Rendering

  • XWiki: of course...
  • eXo Platform: Uses both the XWiki Rendering and the XWiki WYSIWYG Editor to provide a simple wiki inside their tools
  • Wikbook: Uses XWiki Rendering to generate DocBook from content written using a wiki syntax
  • Jahia: Uses XWiki Rendering in its "Jahia Wiki module"
  • Grails XWiki Rendering Plugin: Grails plugin that allows to convert text using the XWiki Rendering Framework.

Alternatives

Here are some libraries similar to XWiki Rendering in purpose:

Tags:
    
  • Powered by XWiki 14.10.18-node2. Hosted and managed by XWiki SAS

Get Connected