I've been experimenting with Cheetah3 as a templating engine to transform XML into something else. I have this working, using the below example XML input
<?xml version="1.0" encoding="UTF-8"?>
<example code="HI">
<codes>
<code>1</code>
<code>2</code>
</codes>
</example>
and the following code
#!/usr/bin/env python
import xmltodict
from Cheetah.Template import Template
with open('example.xml', 'r') as f:
example_xml = f.read()
example_dict = xmltodict.parse(example_xml)
templateDefinition = "This is a template.\n" \
"Example: $example\n" \
"Example: $example.codes\n" \
"Example: $example.codes.code[0]"
template = Template(templateDefinition, searchList=[example_dict])
print(str(template))
Now if I change the input XML to be contained with a <request>
root element (instead of <example>
), and the template code from $example
to $request
it breaks. It would appear that $request
is a reserved word in Cheetah3. Is there anyway around that, short of changing the root XML element before using Cheetah3?