处理基于XML的DSL(Processing XML based DSL)

2019-09-17 00:36发布

SWI-Prolog有很多提供一个通用的XML处理器。

library(sgml)读/写XML结构化格式, library(xpath)用于导航和更多...但如果我试图读取一个SVG,它是有效的XML,我得到的消息:

ERROR: SGML2PL(xml): ...my_file...svg:2: file "...myfile.path.../http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" does not exist

假。

有没有人有这个一个暗示? 我还希望改写最终修改后的文件内容保存的过程中与众不同的DTD。

Answer 1:

我找到了解决办法,在本地保存DTD文件我用卷曲的话,我可以要求SGML库来使用它。

...
    new_dtd(svg, DTD),
    path(Dir, 'svg11.dtd', DtdFile),
    load_dtd(DTD, DtdFile),

    path(Dir, 'html_labels.svg', SvgFile),
    load_structure(SvgFile, [Svg], svg:[dtd(DTD), dialect(xmlns), xml_no_ns(quiet)]),
...

正如我所说的,我得到了svg11.dtd这样

$ curl http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd > svg11.dtd


文章来源: Processing XML based DSL