在这个关于将HTML标签列入白名单的问题之后,我一直在尝试Jeremy Wall的go-html-transform。为了改善可搜索的文档,我在这里问的是这个问题,而不是直接困扰作者。希望这对于SO来说不是特定于工具的。
App Engine,最新的SDK。Post.Body是[]个字节。这有效:
package posts
import (
// ...
"html/template"
"code.google.com/p/go-html-transform/html/transform"
"code.google.com/p/go-html-transform/h5"
)
// ...
// Pre-process post body, then return it to the template as HTML()
// to avoid html/template's escaping allowable tags
func (p *Post) BodyHTML() template.HTML {
doc, _ := transform.NewDoc(string(p.Body))
t := transform.NewTransform(doc)
// Add some text to the end of any <strong></strong> nodes.
t.Apply(transform.AppendChildren(h5.Text("<em>Foo</em>")), "strong")
return template.HTML(t.String())
}
结果:
<strong>Blarg.<em>Foo</em></strong>
但是,如果使用AppendChildren()代替以下内容:
t.Apply(transform.Replace(h5.Text("<em>Foo</em>")), "strong")
我收到内部服务器错误。我是否误解了Replace()的使用?现有文档表明这种事情应该是可能的。
慕容708150
相关分类