gpt4 book ai didi

html - 如何取消转义 Prolog 中的 html 属性值?

转载 作者:搜寻专家 更新时间:2023-10-31 22:13:05 24 4
gpt4 key购买 nike

我在一个库中找到一个谓词 xml_quote_attribute/2(sgml)SWI-序言。这个谓词适用于第一个参数作为输入,第二个参数作为输出:

?- xml_quote_attribute('<abc>', X).
X = '&lt;abc&gt;'.

但我不知道如何进行反向转换。例如,以下查询不起作用:

?- xml_quote_attribute(X, '&lt;abc&gt;').
ERROR: Arguments are not sufficiently instantiated

是否有另一个谓词可以完成这项工作?

再见

最佳答案

这就是 Ruud 使用 DCG 符号 + 推回列表/半上下文符号的解决方案的样子。

:- use_module(library(dcg/basics)).

html_unescape --> sgml_entity, !, html_unescape.
html_unescape, [C] --> [C], !, html_unescape.
html_unescape --> [].

sgml_entity, [C] --> "&#", integer(C), ";".
sgml_entity, "<" --> "&lt;".
sgml_entity, ">" --> "&gt;".
sgml_entity, "&" --> "&amp;".

使用 DCG 使代码更具可读性。它还消除了一些多余的回溯,Cookie Monster 指出这是为此使用 append/3 的结果。

关于html - 如何取消转义 Prolog 中的 html 属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25556773/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com