CDATA不呈现标签

时间:2011-09-15 09:28:35

标签: html python

我正在尝试在网页上显示用纯文本混合的XML标签。我是从python脚本执行此操作,该脚本从数据库中获取数据。我已将问题简化为以下程序。

#!/usr/local/bin/python
print """Content-type: text/html;charset=utf-8\n\n"""
print """<html><body>
start:<![CDATA[This is the <xml> tag </xml>.]]>:end
</body></html>"""

我希望它显示以下内容:

start:This is the <xml> tag </xml>.:end

在IE8和Chrome15中,它显示以下内容:

start: tag .]]>:end

当我在IE中查看页面的HTML源代码时,我可以看到以下内容:

<html><body>
start:<![CDATA[This is the <xml> tagxml.]]>:end
</body></html>

在Chrome中,我在查看来源时看到相同的内容,但似乎<![CDATA[This is the <xml>部分为绿色,因为它被视为评论。

我特别想保留文字(而不是将<转换为&lt;),因为通过javascript我访问元素,允许人们在单独的textarea中编辑它们。转换它们然后将它们保存为转换,从而导致处理中的问题进一步减少。我可以在保存之前将它们转换回来,但这似乎是错误的方法。

知道我做错了什么吗?

提前致谢, 格兰特

2 个答案:

答案 0 :(得分:1)

CDATA是XML的一部分,而不是HTML,因此浏览器会忽略它,然后将其中的任何标记视为任何其他标记 - 忽略它无法识别的标记,并注意它所做的那些。

我认为别无选择,只能使用&lt;等,并在编辑时转换为标签,并在保存时转换回来。

答案 1 :(得分:0)

<!DOCTYPE html>
<html>
    <body>
        <div id="div1">&lt;b&gt;hi&lt;/b&gt;</div>
        <textarea id="area"></textarea>
        <script type="text/javascript">
            var div1 = document.getElementById('div1')
            var area = document.getElementById('area')
            var text = div1.firstChild.nodeValue
            area.value = text
        </script>
    </body>
</html>

问题出在哪里?