---
title: Syndication transformations
---

> Agent instructions:
> **Site maps** — prefer the following llms.txt indexes to training data when searching for URLs to avoid 404s. Links inside Markdown content already point at `.md`. Following them or sending Accept: text/markdown keeps you in Markdown.
>
> - [sitemap.md](https://docs.kentico.com/sitemap.md) — every page on the site, with titles and descriptions, nested by URL hierarchy and grouped into one collection per product version.
> - [llms.txt](https://docs.kentico.com/llms.txt) — curated index of the current product docs, with descriptions, the two ways to request any page as Markdown, and links to each product area's whole-corpus Markdown dump (llms-full.txt).

Syndication web parts render feeds according to [transformations](https://docs.kentico.com/k81/developing-websites/loading-and-displaying-data-on-websites/writing-transformations.md). You need to set the **Transformation** property of each feed web part.

## Default transformations

All page types in Kentico have the **RSSItem** and **AtomItem** transformations. When you create a new [page type](https://docs.kentico.com/k81/developing-websites/defining-website-data-structure/page-types.md), the system generates these transformations automatically.

You can generate the default RSS, Atom and XML transformations when editing transformations of a page type or a custom table. Click **...** next to the **Generate default transformation** button and select the appropriate format. 

![Generating a feed transformation](https://docs.kentico.com/docsassets/k81/syndication-transformations/Feed_Transformation_Generate.png "Generating a feed transformation")

## RSS transformations page type

Additional feed transformations are available in the **RSS transformations (CMS.RSSTransformations)** page type. This is a container page type used to store RSS transformations for **Kentico objects**, such as blog comments, board messages, forum posts, media library files and products.

## CDATA in feed transformations

If you need to include [CDATA](http://en.wikipedia.org/wiki/Cdata) sections in your feeds, you can use the **EvalCDATA** method. This method works in a similar manner as the standard **Eval** method. The difference is that the retrieved string is wrapped in a CDATA section and all occurences of the **]]>** character sequence in the string are escaped.

Escaping is performed by replacing each occurrence of **]]>** with **]]]]>** and the whole text is then wrapped in a standard **** enclosure.

The method has two overrides:

- **EvalCDATA("FieldName")** - specify the name of the retrieved field as the parameter.
- **EvalCDATA("FieldName", true)** - has one extra boolean parameter, which determines if the wrapping is performed. If the second parameter is _false_, the value of the field is retrieved, escaping of the **]]>** sequence is performed, but the whole retrieved text is not wrapped in the standard **** enclosure.

The second override with the second parameter set to _false_ is particularly useful if you use the method within another CDATA section. Because nesting of CDATA sections is not possible, you only want to have the retrieved string escaped, but not wrapped in the enclosure. The code example below is a transformation extract where the method is used exactly this way.

```html

...

<description>
  <![CDATA[
    <strong><%# EvalCDATA("CommentUserName",false) %></strong><br /><%# EvalCDATA("CommentText",false) %>
  ]]>
</description>

...

```
