我在将Javascript作为CDATA添加到.xml文件时遇到问题。那可能吗?我从:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>XHTML 5 Example</title>
<script type="application/javascript">
<![CDATA[
function loadpdf() {
document.getElementById("pdf-object").src="http://www.w3.org/TR/xhtml1/xhtml1.pdf";
}
]]>
</script>
</head>
<body onload="loadpdf()">
<p>This is an example of an
<abbr title="Extensible HyperText Markup Language">XHTML</abbr> 1.0 Strict document.<br/>
<img id="validation-icon"
src="http://www.w3.org/Icons/valid-xhtml10"
alt="Valid XHTML 1.0 Strict"/><br/>
<object id="pdf-object"
type="application/pdf"
data="http://www.w3.org/TR/xhtml1/xhtml1.pdf"
width="100"
height="500"/>
</p>
</body>
</html>
example#2(我更改了宽度值以通过w3c验证)
可以将该文件另存为格式正确的.xml文件,如果可以,则应执行javascript吗?
最佳答案
在XHTML中放置JavaScript script
标记或CSS style
标记时,将其放置在<![CDATA[ ]]>
标记中是一种很好的形式。但是,浏览器会将其作为脚本的一部分进行查看。要阻止脚本的这一部分执行,只需注释掉您的<![CDATA[]]>
标记:
<script type="text/javascript">
/* <![CDATA[ */
/* ]]> */
</script>
要么
<style type="text/css">
/* <![CDATA[ */
/* ]]> */
</style>
这将允许您使用XML中的特殊字符而无需对其进行编码,并使脚本能够正确执行而不会出错。此外,如果解析出空白,则多行注释是一个不错的选择。
编辑添加:
我相信
object
元素应具有结束标记(尽管为空),类似于在指定外部源时应如何向script
标记添加结束标记。到目前为止,我还无法验证。对于XHTML,建议的文件扩展名仍然是
.html
,但是您可以使用任何文件扩展名(甚至.pdf)保存文件。仅仅因为您已将其标记为其他文件扩展名,并不意味着该内容对该扩展名有效,也不意味着应用程序将能够读取该文件。将XHTML保存为
.xml
文件是完全合法的,并且如果XHTML格式正确,则任何可以解析XML的应用程序都可以完全解析它。如果Web浏览器打开XML文件,则可能会将内容显示为XML树。如果您希望网络浏览器将其读取为网页,则应将其保存为(.html)注意:XML文本节点中保留空格和换行符。如果使用XML解析器解析页面,并且出于可读性考虑而缩进,则解析器将在输出中包含换行符和换行符。
<div>
<span>
Some text
on multiple
lines
</span>
<span>
Some text
on multiple
lines
</span>
</div>
范围的内容本质上将是:
"\n Some text\n on multiple\n lines\n"
一种解决方法是将结束尖括号扩展到文本节点的开头:
<div
><span>Some text on one line</span
><span>Some text on one line</span
></div>
之所以有效,是因为忽略了元素内多余的空格。