<p>我认为你至少有三种选择:</p>
<ol>
<li><p>接受新台词就行了。他们可能不受欢迎和丑陋,但他们是完全合法的。</p></li>
<li><p>添加一个用更好的DOCTYPE替换坏DOCTYPE的kludge。也许是这样的:</p>
<pre class="lang-python prettyprint-override"><code>import re
pretty_xml = prettify(doctype, elem)
m = re.search("(<!.*dtd'>)", pretty_xml, re.DOTALL)
ugly_doctype = m.group()
fixed_xml = pretty_xml.replace(ugly_doctype, doctype)
</code></pre></li>
<li><p>使用功能更丰富的XML包。<a href="http://lxml.de" rel="nofollow">lxml</a>浮现在脑海中;它主要与ElementTree兼容。通过使用lxml的<a href="http://lxml.de/api/lxml.etree-module.html#tostring" rel="nofollow">^{<cd1>}</a>函数,您将不需要<code>prettify</code>函数,并且DOCTYPE将按您的需要显示出来。示例:</p>
^{pr2}$
<p>输出:</p>
<pre><code><?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE smil PUBLIC "-//W3C//DTD SMIL 2.0//EN" "http://www.w3.org/2001/SMIL20/SMIL20.dtd">
<smil xmlns="http://www.w3.org/2001/SMIL20/Language">
<head>
<meta base="rtmp://cp23636.edgefcs.net/ondemand"/>
</head>
<body>
<switch>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_256.mp4" system-bitrate="336000"/>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_512.mp4" system-bitrate="592000"/>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_768.mp4" system-bitrate="848000"/>
<video src="mp4:soundcheck/1/clay_aiken/02_sc_ca_sorry_1128.mp4" system-bitrate="1208000"/>
</switch>
</body>
</smil>
</code></pre></li>
</ol>