为什么Javascript函数在XQuery中工作,即使它在包含文件之前声明

时间:2017-01-25 15:14:51

标签: xquery marklogic

有人可以解释为什么即使在将脚本包含在HTML中之前声明了XQuery函数,Javascript测试函数也能正常工作吗?

test.js

function test(){
  alert('from test');
}

index.xqy

declare function local:test(){
  for (: do something :)
  return (
    <script>
    test("Testing...")
    </script>
  )
};

xdmp:set-response-content-type("text/html; charset=utf-8"),
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" /> 
</head>
<body>
<script type="text/javascript" src="test.js"></script>
{
  local:test()
}
</body>
</html>

1 个答案:

答案 0 :(得分:4)

index.xqy中的所有XQuery代码都是在服务器端执行的,因此local:test()在到达浏览器之前会被调用和评估。浏览器看到的第一件事是Doctype声明,它会评估已经呈现local:test()结果的页面。