【发布时间】:2011-12-02 22:26:28
【问题描述】:
我有一个网页,它在点击链接时执行一些 javascript。链接是:
<a
href="javascript:void(0)"
onclick="XsltTransform('category.xml','category.xslt');">Latest news</a>
javascript是:
<script type="text/javascript">
function XsltTransform(xmlfile, xslfile) {
var xml = document.implementation.createDocument("", "", null);
var xslt = document.implementation.createDocument("", "", null);
xml.async = false;
xslt.async = false;
xml.load(xmlfile);
xslt.load(xslfile);
var processor = new XSLTProcessor();
processor.importStylesheet(xslt);
var XmlDom = processor.transformToDocument(xml)
var serializer = new XMLSerializer();
var output = serializer.serializeToString(XmlDom.documentElement);
var outputDiv = document.getElementById("contentbody");
outputDiv.innerHTML = output;
}
</script>
处理后的 XML 看起来很像:
<Content>
<Body><p>It may have taken over 12 years</Body>
</Content>
处理它的 XSL 是一个简单的 xsl:value-of 语句:
<xsl:template match="/">
<p>
<xsl:value-of select="*/*/Body" disable-output-escaping="yes" />
</p>
</xsl:template>
问题是,无论我在 'value-of' 的 'disable-output-escaping' 属性中使用什么值,我总是得到这个渲染(如 Firefox Web 开发人员生成的源视图中所示):
<p>It may have taken over 12 years
我希望在渲染时对解码后的 HTML 块进行编码,我的印象是禁用输出转义允许这样做。
如何让这个非常原始的 XML 再次变成真正的 HTML?
【问题讨论】:
-
您是否在样式表中将输出元素设置为 html?