Обработка DSL на основе XML

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.


person CapelliC    schedule 04.05.2012    source источник


Ответы (1)


Я нашел решение, сохранив локально файл DTD, который я получил с помощью curl, я могу запросить библиотеку 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
person CapelliC    schedule 30.05.2012