怎么把XML的内容嵌入HTML,html - 如何将原始的html字符串嵌入到Text.XmlHtml节点结构中 - 堆栈内存溢出...

这是一个极端的情况。 我正在运行Haskell,Text.XmlHtml(0.2.3版)。 我从Pandoc(版本1.12)获取源数据。 我的源文件都是Markdown格式。

当我在Markdown文件中直接拥有原始HTML时,将处理角落。 当然,这是Markdown格式所支持的,有时这是我获得所需的Table布局的唯一方法。 Pandoc只读取文件,但是当到达Html部分时,它发出的内容大致如下:

[ RawInline (Format "html") ""

, RawInline (Format "html") "%5C%22image.png%5C%22"

, RawInline (Format "html") "" ]

因此,将其转换为分层树可能会变得非常复杂。 在XmlHtml中,所需的结果将是这样的:

Element "a" [("href", "abcdefg")] [Element "img" [("src", "image.png")]]

但是,当我处理的是分层结构时(这是很难做到的(Pandoc发出的所有其他东西都是很好的分层结构),而突然之间不是这样),但是“非分层”部分只能通过基本构建Html解析器来找到。 这适用于围绕其他结构的多个字符串。

理想情况下 ,我想发出的是一个简单的TextNode:

TextNode "%5C%22image.png%5C%22"

我可以通过发出一堆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)。 最后,这并不是很难。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值