Как использовать Groovy XML MarkupBuilder для создания допустимых тегов HTML-скриптов?

я использую Groovy 1.8 XML MarkupBuilder для создания HTML-страницы, которая включает в себя <script> тег.

когда я загружаю страницу в 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.")
  }
}

если я изучу HTML (пустую) отображаемую страницу с помощью Firefox "View Page Source" (Ctrl-U), я вижу:

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

присмотревшись, я вижу '/' о <script ... /> тег отображается красным цветом, и наведенный текст на " / "говорит" самозакрывающийся синтаксис ( "/ > " ), используемый для не-void HTML-элемента. Игнорируя косую черту и рассматривая как начальный тег."

Итак, как мне создать действительный HTML <script> теги с использованием Groovy XML MarkupBuilder ?

2 ответов


Если вы определяете некоторое пустое содержимое, то тег скрипта будет иметь отдельный закрывающий тег:

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

в качестве альтернативы вы можете использовать

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