Первая часть по большей части может быть сделана с помощью ElementTree , но требуется еще несколько шагов:
>>> import xml.etree.ElementTree as ET
>>> html = ET.XML('<html><head><title>Hi</title></head><body></body></html>')
>>> html.head = html.find('head')
>>> html.head.append(ET.XML('<link type="text/css" href="main.css" rel="stylesheet" />'))
>>> html.head.title = html.head.find('title')
>>> html.head.title.text
'Hi'
Вторая часть может быть завершена созданием объектов Element, но вам нужно будет выполнить некоторые из ваших собственных работ, чтобы это произошло так, как вы действительно хотите:
>>> html.body = html.find('body')
>>> my_h1 = ET.Element('h1', {'class': 'roflol'})
>>> my_h1.text = 'BIG TITLE!12'
>>> html.body.append(my_h1)
>>> html.body.SOURCE = ET.tostring(html.body)
>>> html.body.SOURCE
'<body><h1 class="roflol">BIG TITLE!12</h1></body>'
Вы можете создать собственную функцию stylesheet
:
>>> def stylesheet(href='', type='text/css', rel='stylesheet', **kwargs):
... elem = ET.Element('link', href=href, type=type, rel=rel)
... return elem
...
>>> html.head.append(stylesheet(href="main.css"))
И весь документ:
>>> ET.tostring(html)
<html><head><title>Hi</title><link href="main.css" rel="stylesheet" type="text/css" /></head><body><h1 class="roflol">BIG TITLE!12</h1></body></html>
Но, я думаю, если вы собираетесь написать свою собственную вещь, это хорошее место для начала. ElementTree очень мощный.
Редактировать: Я понимаю, что это, вероятно, не совсем то, что вы ищете. Я просто хотел предоставить что-то в качестве доступной альтернативы, а также доказать, что это действительно можно сделать без особых усилий.