我在将 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 是否应该执行?
最佳答案
当放置 JavaScript script
时标签或 CSS style
XHTML 中的标签,将其放在 <![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>
这是有效的,因为元素内的额外空白会被忽略。
关于javascript - 让 javascript 为 .xml 文件执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121594/