> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# renderXml

> Render all sections as a combined XML document.

[ref-rendermarkdown]: /docs/server-sdks/reference/typescript/agents/pom-builder/render-markdown

Render all top-level sections as a single XML document wrapped in a
`<prompt>` root element. Each section becomes a nested XML element with its
title as the tag text or attribute, and bullets/numbered lists rendered as
child elements.

<Note>
  The markdown variant -- [`renderMarkdown()`][ref-rendermarkdown] -- is the
  default render format. Use `renderXml()` only for prompts where the
  downstream LLM or template expects XML-structured input.
</Note>

## **Returns**

`string` -- XML document starting with `<?xml version="1.0" encoding="UTF-8"?>`
and wrapping all sections in a `<prompt>` root.

## **Example**

```typescript {7}
import { PomBuilder } from '@signalwire/sdk';

const pom = new PomBuilder();
pom.addSection('Intro', { body: 'Welcome.' });
pom.addSection('Rules', { bullets: ['Be nice.', 'Stay on topic.'] });

console.log(pom.renderXml());
// <?xml version="1.0" encoding="UTF-8"?>
// <prompt>
//   <section title="Intro">
//     <body>Welcome.</body>
//   </section>
//   ...
// </prompt>
```