Как использовать Groovy XML MarkupBuilder для создания допустимых тегов HTML-сценариев?
Я использую Groovy 1.8 XML MarkupBuilder для создания HTML-страницы, которая включает в себя <script>
тег.
Когда я загружаю страницу в Firefox 18, я вижу пустую страницу вместо ожидаемых результатов.
Кажется, это связано с <script>
тег не имеет дополнительного </script>
тег, даже если нет содержания, чтобы гарантировать </script>
тег.
(См.: /questions/44696130/pochemu-ne-rabotayut-samozakryivayuschiesya-tegi-skripta)
Пример 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 Source Source" (Ctrl-U), я вижу:
<html>
<head>
<script type='text/javascript' src='//example.com/example.js />
</head>
<body>
<p>Hello...Newman.</p>
</body>
</html>
Присмотревшись, я вижу знак "/" на <script ... />
тег отображается красным цветом, а наведенный на него текст надписи '/' говорит: "Самозакрывающийся синтаксис ("/>"), используемый для непустого элемента HTML. Игнорирование косой черты и трактовка как начальный тег".
Итак, как мне создать действительный HTML <script>
теги с использованием Groovy XML MarkupBuilder?
2 ответа
Если вы определите какое-то пустое содержимое, у тега script будет отдельный закрывающий тег:
script( '', type:'text/javascript', src:'//example.com/example.js' )
В качестве альтернативы вы можете использовать
script(type:'text/javascript', src:'//example.com/example.js){mkp.yield("")}