Как использовать 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("")}