IntroductionIntroduction
    <Access Control>Access Control<Access Control>Access Control
    <Version control>Version control<Version control>Version control
    <Templates>Templates<Templates>Templates
    <RXML>RXML<RXML>RXML
    <Editors>Editors<Editors>Editors
  Content EditorContent Editor
  Editing filesEditing files
  Version ControlVersion Control
  Work areasWork areas
  LogViewLogView
  IntraSeekIntraSeek
 
RXML

Web pages in general is made up of text mixed with HTML tags, sent over the Internet from a web server to a browser such as Netscape or Internet Explorer. The browser uses the HTML tags to show the page in all its glory to the web-surfing user. There are a lot of different browsers and versions of browser in daily use, and so it is obvious that the set of HTML tags must be rather fixed and agreed upon by all. Despite this, Roxen Challenger offers its own tags, called RXML tags, to extend the sometimes quite limited power of HTML, and it even allows users to define their own tags. How is this possible?

Macro expansion
The answer is that the pages are not sent to the browser as you have written them. Rather, the pages are processed by Roxen Challenger and every instance of an RXML tag is substituted by its HTML equivalent. For instance, the <tablify> tag, which takes a list of things and turn them into a rather neat table, is substituted by a rather complicated expression using the ordinary HTML tag <table>. The <gtext> tag takes text and renders it as an image with selectable fonts, colors, shading, stippling and other graphical effects. When Challenger reaches a <gtext> tag, it generates the necessary image and substitutes an ordinary HTML <img> tag with a link to the newly generated image.

The same happens with tags defined by the user. Whenever a user-defined tag is encountered, it is substituted with the contents of its definition. This in turn may contain other RXML tags, which is then expanded into their definition, and so on, until it is only ordinary HTML tags left.

So, the RXML tags never reach the browsers. Instead, the server expands every RXML tag in the document to HTML before sending the, by now completely understandable, page to the requesting browser.