2010-11-08 67 views
1

我无法将JavaScript作为CDATA添加到.xml文件。那可能吗?我开始从:让JavaScript执行.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(I改变宽度值传递W3C验证)

可以将该文件保存为合式.xml文件,应的JavaScript执行若有?

回答

1

当在XHTML中放置JavaScript script标记或CSS style标记时,最好将它放置在<![CDATA[ ]]>标记中。但是,它将被浏览器视为脚本的一部分。为了防止这部分脚本从执行,只需注释掉你<![CDATA[]]>标签:

<script type="text/javascript"> 
/* <![CDATA[ */ 

/* ]]> */ 
</script> 

OR

<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> 

这工作,因为元素内额外的空白被忽略。

+0

如何将xhtml保存在文件foo.xml而不是foo.xhtml或foo.html中? – Thufir 2010-11-08 18:02:19

+0

标签只是让你对你的内联脚本懒惰。你可以用你想要的任何文件扩展名来标记你的文本文件,但是它们将被基于它接收的MIME类型的网络浏览器不同地解析。 “.xml”将默认显示为XML文档,而不是大多数浏览器中的网页。 – zzzzBov 2010-11-08 19:24:02