我在将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>


之所以有效,是因为忽略了元素内多余的空格。

10-05 20:44
查看更多