На странице Groovy в качестве примера существует пример того, как использовать Groovy разработчик HTML со смешанным содержанием:
p [
"This is some",
b"mixed",
"text. For more see the",
ahref:'http://groovy.codehaus.org' ["Groovy"],
"project"
]
Это однако не работает на меня, я получаю сообщение об ошибке как:
expecting ']', found 'mixed' @ line 33, column 23. b"mixed", ^ 1 error
Страница Groovy в качестве примера указывает что:
[Примечание: синтаксис в некоторых из этих примеров немного устарел. См. главу 8 GINA тем временем, пока эти примеры не будут обновлены.]
Мое подозрение поэтому - то, что синтаксис разработчика HTML изменился, однако у меня нет книги, таким образом, я не могу проверить, и я, может казаться, не нахожу соответствующего примера этой работы онлайн. Кто-либо знает, как синтаксис, как предполагается, находится в Groovy 1.7 и имеет эту работу?
Я обнаружил, что многие элементы в этом примере устарели. Синтаксис для смешанных hrefs и [] вокруг абзаца мне не подходит.
Для смешанного содержимого необходимо использовать специальное ключевое слово mkp.yield. Также есть mkp.yieldUnescaped, если вы не хотите убегать. Есть и другие функции, которые вы можете выполнять с помощью mkp.
Этот пример работает и показывает использование смешанного содержимого:
def builder = new groovy.xml.MarkupBuilder()
builder.html {
head {
title"XML encoding with Groovy"
}
body {
h1"XML encoding with Groovy"
p"this format can be used as an alternative markup to XML"
a(href:'http://groovy.codehaus.org', "Groovy")
p {
mkp.yield "This is some"
b"mixed"
mkp.yield " text. For more see the"
a(href:'http://groovy.codehaus.org', "Groovy")
mkp.yield "project"
}
p "some text"
}
}
Вывод:
<html>
<head>
<title>XML encoding with Groovy</title>
</head>
<body>
<h1>XML encoding with Groovy</h1>
<p>this format can be used as an alternative markup to XML</p>
<a href='http://groovy.codehaus.org'>Groovy</a>
<p>This is some
<b>mixed</b> text. For more see the
<a href='http://groovy.codehaus.org'>Groovy</a>project
</p>
<p>some text</p>
</body>
</html>
Я думаю, это работает лучше:-
def writer = new StringWriter()
def builder = new groovy.xml.MarkupBuilder(writer)
builder.html {
head {
title"Report"
}
body {
h1"XML encoding with Groovy"
p"this format can be used as an alternative markup to XML"
// an element with attributes and text content /
a(href:'http://groovy.codehaus.org', "Groovy")
// mixed content /
p() {
"This is some"
"mixed"
"text. For more see the"
a(href:'http://groovy.codehaus.org', "Groovy")
"project"
}
p "some text"
}
}
Результат:-
<html>
<head>
<title>Report</title>
</head>
<body>
<h1>XML encoding with Groovy</h1>
<p>this format can be used as an alternative markup to XML</p>
<a href='http://groovy.codehaus.org'>Groovy</a>
<p>
<a href='http://groovy.codehaus.org'>Groovy</a>
</p>
<p>some text</p>
</body>
</html>