Я надеялся создать SVG-диаграмму с помощью Draw.io и загрузить ее в Викимедиа, чтобы ее можно было использовать в Википедии.
Однако svg Draw.io использует XHTML, а Викимедиа запретила XHTML из соображений безопасности. Это означает, что мне придется каким-то образом конвертировать XHTML в HTML5. Тем не менее, я попытался вручную настроить его, что позволило ему пройти, но загрузка Викимедиа была повреждена, поэтому svg пуст.
Итак, есть ли способ обойти это? Мне хотелось бы верить, что векторные программы, такие как Inkscape, поддерживают такое преобразование, но я просто этого не вижу.
Пример SVG Draw.io
<?xml version = "1.0" encoding = "UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns = "http://www.w3.org/2000/svg" style = "background-color: rgb(255, 255, 255);" xmlns:xlink = "http://www.w3.org/1999/xlink" version = "1.1" width = "1491px" height = "1901px" viewBox = "-0.5 -0.5 1491 1901"><defs/>
<rect fill = "#ffffff" width = "100%" height = "100%" x = "0" y = "0"/><g><g data-cell-id = "0"><g data-cell-id = "1"><g data-cell-id = "lHPyWN3xTS5u2yIX5tx5-5"><g><path d = "M 610 60 L 610 80 L 460 80 L 460 93.63" fill = "none" stroke = "rgb(0, 0, 0)" stroke-miterlimit = "10" pointer-events = "stroke"/><path d = "M 460 98.88 L 456.5 91.88 L 460 93.63 L 463.5 91.88 Z" fill = "rgb(0, 0, 0)" stroke = "rgb(0, 0, 0)" stroke-miterlimit = "10" pointer-events = "all"/></g></g><g data-cell-id = "lHPyWN3xTS5u2yIX5tx5-6">
Викимедиа говорит следующее:
This SVG file contains an illegal namespace "http://www.w3.org/1999/xhtml".
Не могли бы вы добавить пример кода, который экспортирует Draw.io?
Это тег <div>
, включающий атрибут пространства имен — ничего необычного. Можете ли вы добавить больше кода, чтобы мы могли видеть элементы SVG в контексте HTML?
Согласно сообщению, которое вы получаете, и документации по экспорту SVG draw.io, проблема, с которой вы столкнулись, заключается в том, что ваш SVG использует форматированные текстовые узлы, которые draw.io может экспортировать только с использованием встроенных foreignObject
элементов из HTML. пространство имен (в основном фрагменты стилизованного HTML, позволяющие переносить строки и форматировать дочерние теги).
Единственный способ получить «чистый» экспорт диаграмм SVG с одним пространством имен — это убедиться, что для всех текстовых объектов отключены параметры «Перенос по словам» и «Форматированный текст».
Лучше всего спросить на commons.wikimedia.org/wiki/Commons:Graphic_Lab/… за советом викиграфиста. Они лучше всех знают, что пошло не так.