1

this question on whitelisting HTML tags之后,我一直在尝试 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() 的使用?现有的文档表明这种事情应该是可能的。

4

1 回答 1

2

在 App Engine 之外运行您的转换代码,它会出现恐慌,此时您可以在源代码中看到一个 TODO。然后阅读代码并看到如果给定一个根节点就会出现恐慌并不太难。

于 2012-04-09T16:46:43.483 回答