gpt4 book ai didi

javascript - 为什么 google 代码美化器拒绝与 XSLT 一起使用?

转载 作者:行者123 更新时间:2023-11-28 09:55:39 27 4
gpt4 key购买 nike

google code prettifier (也在这里使用,在 SO 上)解析 .prettyprint 的内容并注入(inject)一些<span> s 允许通过 css 突出显示。

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

如果我直接打开 XHTML 文件(在服务器上使用 xsltproc 生成),Firefox 突然能够正确运行 PrettyPrint。但如果它转换 XML 本身,美化就会停止工作。我该如何解决这个问题?我可能做错了什么吗?

这是 XML 文件

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="test.xslt" type="text/xsl" ?>
<root><![CDATA[
int main() {
float x {7.7};
return 0;
}
]]></root>

这是样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:output method="xml" version="1.0" indent="yes"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
/>
<xsl:template match="/">
<html><head>
<link rel="stylesheet" type="text/css" href="_include/gcp/prettify.css" />
<script type="text/javascript" src="_include/gcp/prettify.js"> </script>
</head>
<body onload="prettyPrint()">
<pre class="prettyprint"><xsl:value-of select="." /></pre>
</body></html>
</xsl:template>

</xsl:stylesheet>

作为引用,这是由 xsltproc 生成的 XHTML 1.1 :

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="_include/gcp/prettify.css"/>
<script type="text/javascript" src="_include/gcp/prettify.js"/>
</head>
<body onload="prettyPrint()">
<pre class="prettyprint">
int main() {
float x {7.7};
return 0;
}
</pre>
</body>
</html>

编辑:

这是由 Firefox 呈现的标记(使用 Ctrl+Shift+I 提取)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href="gcp/prettify.css"/>
<script type="text/javascript" src="gcp/prettify.js"/>
</head>
<body onload="prettyPrint()">
<pre class="prettyprint">
<SPAN xmlns=""> </SPAN>
<SPAN xmlns="">int</SPAN>
<SPAN xmlns=""> main</SPAN>
<SPAN xmlns="">()</SPAN>
<SPAN xmlns=""> </SPAN>
<SPAN xmlns="">{</SPAN>
<SPAN xmlns="">
</SPAN>
<SPAN xmlns="">float</SPAN>
<SPAN xmlns=""> x </SPAN>
<SPAN xmlns="">{</SPAN>
<SPAN xmlns="">7.7</SPAN>
<SPAN xmlns="">};</SPAN>
<SPAN xmlns="">
</SPAN>
<SPAN xmlns="">return</SPAN>
<SPAN xmlns=""> </SPAN>
<SPAN xmlns="">0</SPAN>
<SPAN xmlns="">;</SPAN>
<SPAN xmlns="">
</SPAN>
<SPAN xmlns="">}</SPAN>
</pre>
</body>
</html>

最佳答案

也许你可以尝试添加

<script>prettyPrint()</script>

在正文之后。我想也许Firefox是逐行执行代码的,所以它会先尝试执行prettyPrint(),然后插入XSLT内容,所以prettyPrint()不会有什么要执行...

关于javascript - 为什么 google 代码美化器拒绝与 XSLT 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com