Contelligent Markup Basics
Contelligent Markup is quite simple and easy to understand. It basically consists of a single jsp-taglib like tag (namely <finix:render .../>) which is used throughout all contelligent components to include the rendered content of any RenderableComponent.
The dtd for that tag is as followed.
<!ELEMENT finix:render EMPTY>
<!ATTLIST finix:render
name #PCDATA
>
Guess what the following markup produces when viewed with a web-browser:

component tree for MarkupBasics-I
<html>
<head>
<title><finix:render path="page-title"/></title>
</head>
<body>
<div class="title"><finix:render path="page-title"/></div>
<div class="output-box">
<div class="left-title">Output:</div>
<div class="code"> <finix:render path="page-content"/></div>
</div>
</body>
</html>
Markup of MarkupBasics-I
As you might have noticed, the only difference to a normal html document is that it contains a custom 'finix:render' tags, which are placeholders for editable or dynamic values to be replaced at runtime.
Those tags are evaluated when the page is streamed to a browser. The render instruction is basically a recursive evaluation of the component referenced by the component referenced by the ContelligentPath? 'path' attribute.
Thus, the page component above will replace render tags with the rendered content of the page-title and page-content.
That's it. The <finix:render path="..."/> tag is absolutely the only tag you have to learn in order to use all markup facilities available in contelligent.
Basically you can think of the render tag to be just an include statement that will include already rendered/evaluated content of the referenced component.
You will agree that this is a quite standardized way of including either content or markup that is positioned relative to the current page component.
The next tutorial step will show how a <finix:render path="..."/> with a ListFolder will render its target
See also
Markup Basics II, Parameterized Rendering, Category Rendering




