Javascript 为什么谷歌代码美化器拒绝使用XSLT?

Javascript 为什么谷歌代码美化器拒绝使用XSLT?,javascript,webkit,gecko,google-code-prettify,Javascript,Webkit,Gecko,Google Code Prettify,解析.prettyprint的内容,并注入一些以允许通过css突出显示 这非常简单,除非我使用XSLT提供XML文件。然后,美化剂只能在Opera中正确运行,但拒绝与Firefox或Chrome(准确地说是Chrome)一起使用。我编写了一个最小的示例,见下文 如果我直接打开XHTML文件(使用xsltproc在服务器上生成),Firefox会突然成功地正确运行prettyprint。但是,如果它转换XML本身,prettify就会停止工作。我怎样才能避开这件事?我可能做错什么了吗 这是XML文

解析
.prettyprint
的内容,并注入一些
以允许通过css突出显示

这非常简单,除非我使用XSLT提供XML文件。然后,美化剂只能在Opera中正确运行,但拒绝与Firefox或Chrome(准确地说是Chrome)一起使用。我编写了一个最小的示例,见下文

如果我直接打开XHTML文件(使用
xsltproc
在服务器上生成),Firefox会突然成功地正确运行prettyprint。但是,如果它转换XML本身,prettify就会停止工作。我怎样才能避开这件事?我可能做错什么了吗

这是XML文件


这是样式表:


作为参考,这是由
xsltproc
生成的XHTML 1.1:


int main(){
浮点x{7.7};
返回0;
}
编辑: 这是Firefox呈现的标记(使用Ctrl+Shift+I提取)


int
主要的
()
{
浮动
x
{
7.7
};
回来
0
;
}

也许您可以尝试添加一个

<script>prettyPrint()</script>
prettyPrint()

在尸体后面。我认为Firefox可能会逐行执行代码,因此它会首先尝试执行
prettyPrint()
,然后插入XSLT内容,这样
prettyPrint()
就不会执行任何东西了…

将xsl的输出方法从xml更新为html

<xsl:output method="html" version="1.0" indent="yes"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>


因为XSLT像猪一样:你可以把口红贴在它上面,但它仍然是猪……TKON:坦白地说,我认为XSLT是一个很好的主意。然而,在服务器端应用转换的常见做法有点误导。@Dimitre Novatchev:为什么要删除xslt标记?这完全与xslt有关。@bitmask:这个问题与xslt语言的哪个领域有关?我找不到一个这样的地方。这个问题是特定于浏览器实现的——在W3C XSLT规范中没有答案。@DimitreNovatchev:它不必由XSLT规范直接回答。这个问题只在使用XSLT时才会出现。一旦这种转变消失,就没有问题了。不,不是这样。我甚至在一张图片上尝试了一个
onclick
事件。它好像不识别降价。不,我指的是FF生成的源代码。我认为如果使用CTRL+U,Firefox呈现的代码应该会出现,但我可能错了,请参见编辑。标记化似乎有效,但级联样式表显然被忽略了。Prettify似乎无法将
属性添加到跨度中。问题似乎不在样式表中,而是在javascript中。我注意到的另一件事是,当firefox呈现XSLT时,代码开头的
不会显示,而是在服务器端呈现XSLT时显示。另外,我认为那些
标签应该是
。您能告诉它是一个XHTML1文档,而不是1.1吗?我在1.0中测试了gcp,但不是1.1。
<xsl:output method="html" version="1.0" indent="yes"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>