Каков правильный синтаксис для использования разработчика HTML со смешанным содержанием в Groovy 1.7?

На странице 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 и имеет эту работу?

5
задан jxramos 5 December 2018 в 22:16
поделиться

2 ответа

Я обнаружил, что многие элементы в этом примере устарели. Синтаксис для смешанных 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>
9
ответ дан 13 December 2019 в 19:24
поделиться

Я думаю, это работает лучше:-

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>
1
ответ дан 13 December 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: