admin 管理员组文章数量: 887021
怎么把XML的内容嵌入HTML,html
这是一个极端的情况。 我正在运行Haskell,Text.XmlHtml(0.2.3版)。 我从Pandoc(版本1.12)获取源数据。 我的源文件都是Markdown格式。
当我在Markdown文件中直接拥有原始HTML时,将处理角落。 当然,这是Markdown格式所支持的,有时这是我获得所需的Table布局的唯一方法。 Pandoc只读取文件,但是当到达Html部分时,它发出的内容大致如下:
[ RawInline (Format "html") ""
, RawInline (Format "html") ""
, RawInline (Format "html") "" ]
因此,将其转换为分层树可能会变得非常复杂。 在XmlHtml中,所需的结果将是这样的:
Element "a" [("href", "abcdefg")] [Element "img" [("src", "image.png")]]
但是,当我处理的是分层结构时(这是很难做到的(Pandoc发出的所有其他东西都是很好的分层结构),而突然之间不是这样),但是“非分层”部分只能通过基本构建Html解析器来找到。 这适用于围绕其他结构的多个字符串。
理想情况下 ,我想发出的是一个简单的TextNode:
TextNode ""
我可以通过发出一堆TextNode(每个RawInline一个)或将RawInline元素组合在一起来实现。 关键是我想发出一个TextNode,其中包含原始Html,并且最终呈现该文本而没有任何额外的Html转义。
我的渲染器最终是Heist片段,但这可能意味着它是通过Blaze运行的。
我的最终选择,这可能会工作,是从Pandoc要经过大火HTML呈现,然后通过XmlHtml解析器得到的东西,我可以嵌入到海斯特片段。 我只想避免这种情况,因为它感觉很脏。
(我想,如果我想将Java脚本放入Markdown文档中,实际上会遇到相同的问题...这在语言上是技术允许的,但可能非常邪恶。)
有办法做到吗,还是我的工具太局限了?
更新
我尝试了从Pandoc到Blaze到XmlHtml的渲染路线。 事实证明,我得到了相同的结果,将HTML放到最终的节点中,然后从浏览器中逃脱出来。 这是我的功能(比我执行的完整实现要短和容易得多...)
pandocToHtml :: Pandoc.Pandoc -> [XmlHtml.Node]
pandocToHtml = Text.Blaze.Renderer.XmlHtml.renderHtmlNodes . Pandoc.writeHtml Pandoc.def
Pandoc.def包括所有的“ allow_raw_ *”扩展名,包括allow_raw_html。
我可以想到的最后一件事是应用我自己的HTML解析器(然后将其贡献给Pandoc)。 最后,这并不是很难。
本文标签: 怎么把XML的内容嵌入HTML HTML
版权声明:本文标题:怎么把XML的内容嵌入HTML,html 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1698566042h308856.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论