2010-09-16 84 views
0

我试图让页面验证(http://validator.w3.org),它抱怨我在脚本标记内部有一些xml。由于脚本标记中的XML而无法验证页面

我该如何解决这个问题?我是否应该在我的脚本标签的内容上写下“不要看着我”?

68行,列114:为 元素 “STR_PROCESSING” 结束标记这是不 开放

>处理.... </STR_Processing >

代码:

<script type="text/javascript" defer="defer"> 
var sML_XML='<STR_Processing>Processing....</STR_Processing><STR_OK>...'; 
</script> 
+0

请出示脚本标记。 – 2010-09-16 19:50:42

回答

2

你必须把斜杠前一个反斜杠(\),当它在一个脚本。
看看这里:http://www.htmlhelp.com/tools/validator/problems.html#script

比如:
var test="<b>something<\/b>";
代替:
var test="<b>something</b>";

这应该没有错误验证。

+1

+1。如果您直接看验证程序输出的错误消息,则应该看到“如果此错误发生在脚本元素内”消息,该消息链接到验证程序自己的常见问题解答,然后再链接到该页面。 – Quentin 2010-09-16 20:03:50

+1

@David Dorward,这就是我得到那个页面的方式。 :)很久以前,我已经看到它,但忘记了它的地址,但我记得我从验证器的页面导航到了它,所以我创建了一个错误的代码来获取错误和页面地址。 :P – rhino 2010-09-16 20:07:42

0

如果您在字符串中使用的标签,你可以这样做:

var yourHTML = "<STR_PROCESSING>YourData<" + "/STR_PROCESSING>"; 
+1

这可行,但效率不高。按照犀牛的答案和验证者自己的FAQ进行转义是正确的解决方案。 – Quentin 2010-09-16 19:57:34

0

正确的XML的方法是使用CDATA节标识符:

<script type="text/javascript">//<![CDATA[ 
/* code */ 
//]]></script> 
+0

错误消息是当文档是HTML而不是XHTML时发生的,所以这不会解决问题。 – Quentin 2010-09-16 19:58:07

+0

如果是HTML,我会使用转义序列而不是'<', '>'和'&':'\ x3C'(<), '\x3E'(>)和'\ x26'(&)。 – Lekensteyn 2010-09-16 20:00:27

+1

只有'<或'/'需要被转义(哪一个不重要,关键是' Quentin 2010-09-16 20:01:59