如何使用Groovy XML MarkupBuilder创建有效的HTML脚本标记?

时间:2013-02-13 19:46:30

标签: html xml groovy markup markupbuilder

我正在使用Groovy 1.8 XML MarkupBuilder构建一个包含<script>标记的HTML页面。

当我在Firefox 18中加载页面时,我看到一个空白页而不是预期的结果。

这似乎是由于生成的<script>标记没有补充</script>标记, 即使没有内容可以保证</script>标签。 (见:https://stackoverflow.com/questions/69913/why-dont-self-closing-script-tags-work

示例Groovy代码:

def builder = new groovy.xml.MarkupBuilder( out )

builder.html {
  head {
    script( type:'text/javascript', src:'//example.com/example.js' )
  }

  body {
    p("Hello...Newman.")
  }
}

如果我使用Firefox的“查看页面源”(Ctrl-U)检查(空白)呈现页面的HTML,我看到:

<html>
  <head>
    <script type='text/javascript' src='//example.com/example.js />
  </head>
  <body>
    <p>Hello...Newman.</p>
  </body>
</html>

仔细观察,我看到<script ... />标签上的'/'呈现为红色, 并且'/'上的悬停文本表示在非空HTML元素上使用的“自闭语法(”/&gt;“)。忽略斜杠并将其视为开始标记。”

那么,如何使用Groovy XML MarkupBuilder生成有效的HTML <script>标记?

2 个答案:

答案 0 :(得分:9)

如果您定义了一些空内容,那么脚本标记将有一个单独的结束标记:

script( '', type:'text/javascript', src:'//example.com/example.js' )

答案 1 :(得分:2)

或者你可以使用

script(type:'text/javascript', src:'//example.com/example.js){mkp.yield("")}