2010-08-30 3 views
3

Есть ли какой-либо подход для создания редактора XML-файла на основе схемы XSD? (Это должен быть веб-редактор Java или Python).Автоматический редактор XML (на основе схемы XSD)

+0

Что вы подразумеваете под «редактором» в этом контексте? Вы имеете в виду редактор WYSIWYG или способ программно редактировать дерево DOM или что-то еще? –

+0

Скорее DOM-редактор. – Solvek

+2

Я думаю, вы имеете в виду «схему», а не «схему». Они - разные термины, и использование неправильного заставляет людей работать над тем, чтобы понять вас. – LarsH

ответ

1

С помощью Jaxe вы можете автоматически создать файл конфигурации из файла XSD и отредактировать его вручную, чтобы улучшить его. Это дает вам специализированный XML-редактор для языка. Затем вы можете использовать этот файл конфигурации с помощью WebJaxe для редактирования ваших файлов в Интернете. Это не подходит, если вы все время меняете XSD (хотя вы не указали это) ...

Jaxe - приложение Java, а WebJaxe использует Jaxe как Java-апплет для редактора.

1

Забавный, я касаюсь себя чем-то подобным. Я строю редактор (на самом деле не WYSIWYG, но он абстрагирует DOM) для XMLs Civilization 4 (стратегическая игра) использует для хранения всего. Я долго думал об этом и построил два прототипа (на Python), один из которых выглядит многообещающим, поэтому я буду расширять его в будущем. Обратите внимание, что Civ 4 XML - это просто нечто большее, чем база данных, совместимая с модным словом (только те данные, которые лучше хранить в JSON/YAML и т. П., В основном пары ключевых значений с несколькими подсписками пар «ключ-значение» - нет рекурсивных структур данных).

Мой первый подход был основан на том факте, что в основном существуют пары ключ-значение, которые не подходят для документов, которые используют всю мощь XML (рекурсивные структуры данных и т. Д.). Мой новый дизайн более изощренный - до сих пор я только строил (все еще багги) фабрику валидатора таким образом, но я с нетерпением жду его продления, например. для виджетов редактирования схемы. Основная идея состоит в том, чтобы пройти DOM XSD, распознать ожидаемое содержимое (список других узлов, текст определенного формата и т. Д.), Построить в свою очередь (рекурсивно) валидаторы для них, а затем построить валидатор более высокого порядка, который применяется все ранее созданные валидаторы в правильном порядке. Это удобно использовать для функционального программирования, чтобы получить удовольствие от этой идеи. Для части редактирования (btw, я использую PyQt), я планирую сгенерировать пару Label-LineEdit для тегов, которые содержат текст и заголовок (Label) для тегов, которые содержат другие элементы, возможно, отступающие подэлементы и/или обеспечивающие сворачивание. Опять же, рекурсия является ключом к их созданию.

Qt позволяет нам присоединить валидатор к виджету ввода текста, поэтому эта часть будет простой, как только мы сможем создать валидатор, например. тег, содержащий «int». Для тегов, содержащих другие теги, возможно нечто похожее на приведенное выше: Создайте валидатор для каждого элемента и привяжите его. Единственная часть, которую нужно изменить, - это то, как мы получаем контент. Игнорируя комментарии, атрибуты, инструкции по обработке и т. Д., Это все равно должно быть относительно simple - для пары «tag: content» сгенерировать «контент» и передать его вашему парсеру DOM; для элементов с подэлементами генерирует представление детей и помещает их между «...». Атрибуты могут быть реализованы также как пары ключ-значение, только с дополнительным флагом.

2

ExxEditor - это XML-редактор, основанный на XML-схеме. Это проект на C++, и он вообще не работает в Интернете.

Я никогда не использовал его, но я думаю, что файлы XML-схемы могут быть аннотированы для «настройки» пользовательского интерфейса.

Смежные вопросы