如何在xml文档中包含Javascript?

如何在xml文档中包含Javascript?,javascript,xml,Javascript,Xml,任务似乎很简单:如何在xml文档中包含Javascript文件,以便至少Opera和Firefox能够实际解析并执行代码?一个应该帮助您的函数是eval()函数。此函数将计算作为Javascript传递给它的任何字符串 此外,还可以用Javascript解析XML。只需谷歌“javascript xml解析器” 把这两个想法结合起来,你就可以上路了 如果您只是想将javascript放入XML文件中: 下面是一些javascript; 这里有更多的javascript; 这里有更多的java

任务似乎很简单:如何在xml文档中包含Javascript文件,以便至少Opera和Firefox能够实际解析并执行代码?

一个应该帮助您的函数是eval()函数。此函数将计算作为Javascript传递给它的任何字符串

此外,还可以用Javascript解析XML。只需谷歌“javascript xml解析器”

把这两个想法结合起来,你就可以上路了


如果您只是想将javascript放入XML文件中:

下面是一些javascript; 这里有更多的javascript; 这里有更多的javascript; jere甚至更像javascript;

如果我明白了,您希望在浏览器中查看XML文档时运行javascript吗

这不是XML标准的一部分,因此在它被支持之前是不会被支持的(我假设这永远不会被支持,因为XML不是用于显示的,而是用于数据)。如果您谈论的是XHTML,那么这是另一回事

--

编辑:只是为了澄清我的答案

XML从来没有打算像HTML一样成为显示标记,这就是为什么开发了XHTML(符合XML标准的HTML)。浏览器以某种方式解释XHTML,但XML只是原始数据


如果您希望XML运行诸如JavaScript之类的添加,您将需要考虑使用XSLT将XML转换为XHTML,从而利用浏览器的功能。

将XML和JavaScript嵌入XHTML文档中,然后使用动态HTML的大量和已记录的能力。p>


通过推理,您将获得比您更快的启动和运行速度,因为一些浏览器对XML文档实现的CSS样式较弱且文档记录不完整,因此它们必须支持嵌入XML中的Javascript的执行,就好像这两个想法之间有任何联系一样。

添加一个说明XHTML名称空间的脚本,它将正常运行

<xhtml:script xmlns:xhtml="http://www.w3.org/1999/xhtml"
                src="file.js"
                type="application/javascript"/>

另见


或对于外部javascript:

<script xmlns="http://www.w3.org/1999/xhtml" src="external.js"></script>

在Firefox和Opera中工作。

我这样做:

XSLT:

<xsl:value-of select="/label[@id='MyScript']/text()" disable-output-escaping="yes"/>

XML:

<label id="MyScript"><![CDATA[
<script type="text/javascript">
alert("Hello world");
</script>
]]></label>

警报(“你好世界”);
]]>

与上述类似,但这可能会出错,因为
]>
部分不是有效的代码。如果要将其放入XSL脚本中,也可以在这些开始和结束元素之前添加JS注释标记

我还使用了
xsl:text
元素来输出
部分。这一部分可能有点欺骗,但它会产生格式良好的XML。
xsl:choose
块中的一个示例可能是

...
<xsl:when test='name()="script"'>
  <script>
    <xsl:for-each select='@*'><xsl:copy-of select='.' /></xsl:for-each>
    <xsl:text disable-output-escaping='yes'>
// &lt;![CDATA[
  </xsl:text>
  <xsl:copy-of select='./text()' />
  <xsl:text disable-output-escaping='yes'>
//]]&gt;
  </xsl:text>
  </script>
</xsl:when>
...
然后变成,

...
<script type='javascript'>
// <![CDATA[
alert('Hello World!');
// ]]>
</script>
。。。
// 

有效保存,可通过XML和浏览器阅读。

请重新阅读问题。我不是在问如何从javascript解析javascript,或者如何从javascript解析xml。鉴于原始问题的质量很差,这是一个合理的答案。不是由浏览器执行的。好吧,让我这样试试:我希望Firefox加载xml文件,然后解析与之相关的javascript文件并执行其代码。您试图实现的范围需要扩大,编辑问题以添加更多细节,因为我相信你混淆了因果关系:浏览器可以显示XML这一事实并不意味着他们将以与解释HTML相同的方式来解释它。就我个人而言,我认为XML样式表指令是一个坏主意。投票给它是因为这个问题在我看来很清楚,而AdE给出了一个很好的答案。是的,你说对了,我说的是XML,而不是XHTML。我不关心标准,只关心实际的浏览器功能。他们支持,我认为类似的东西应该是JavaScript。我认为你需要考虑XML的目的。您可以使用XSLT将XML转换为XHTML,然后以HTML文档的形式打开页面,使用您想要运行的所有javascript。XHTML只是XML的一个特例。现在是什么让xml不利于运行javascript?理论上,js与xml的设计目的无关,我看不到任何联系,也看不到任何理由限制js在xml文档中运行。@snitko-主要原因是没有浏览器会将其理解为显示标记,要使事件等基本功能正常工作,您必须定义大量的扩展,您还可以使用xhtml,xhtml已经方便地定义了这些内容扫描确认xmlns是解决方案:)回答得好!工作在铬!虽然我觉得奇怪,它可以运行getElementById/querySelectorAll,因为它不在正确的命名空间中,而且我的架构可能会使用不同的属性来表示它们。@user4815100这表示“在这个标记及其子体中,命名空间
xhtml
意味着
”http://www.w3.org/1999/xhtml“
namespace”。它基本上允许您在任何XML文档中包含XHTML元素。
...
<script type='javascript'>alert('Hello World!');</script>
...
...
<script type='javascript'>
// <![CDATA[
alert('Hello World!');
// ]]>
</script>