经过四处闲逛,我想我终于找到了解决问题的办法。我决定不使用JQuery,因为Firebug错误确实困扰了我。
我从How to getElementByClass而不是Java的GetElementById合并了此getElementsByClassName()函数?进入我的解决方案。我创建了自己的JS,称为\“ xml.js \”:-
xml.js
function getElementsByClassName(node,classname) {
if (node.getElementsByClassName) { // use native implementation if available
return node.getElementsByClassName(classname);
}
else {
return (function getElementsByClass(searchClass,node) {
if (node == null) {
node = document;
}
var classElements = [],
els = node.getElementsByTagName(\"*\"),
elsLen = els.length,
pattern = new RegExp(\"(^|\\\\s)\"+searchClass+\"(\\\\s|$)\"), i, j;
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
})(classname, node);
}
}
window.onload=function() {
var elements = getElementsByClassName(document, \"html\");
for (var i = 0; i < elements.length; i++) {
var e = elements[i];
e.innerHTML = e.innerHTML.replace(/</g, \"\");
}
};
XSL
我在XSL中添加了此JS参考:-
我基本上在需要HTML格式的标签上添加了“ 20”,例如:
XML格式
我的XML有很多标记:-
Hello! this is a test.
Email me at Moo.
]]>
CDATA中的HTML似乎可以在浏览器中正确呈现。
更新
只是附带说明,我还尝试了删除CDATA并转义:-
<b>Hello!</b> this is a <i>test</i>.
Email me at <a href=\"mailto:cow@dung.com\">Moo</a>.
然后,我执行以下操作:
...结果如下:-
IE 8:可以正常显示。
Chrome 9:可以正常显示
Safari 5:可以正常显示
Firefox 4:不起作用-显示标签而不是粗体字。
似乎每个浏览器对渲染的处理方式都不一样...对FF4感到非常失望... ba。
至少到目前为止,我将坚持使用javascript解决方案,直到找到更好的解决方案为止。