Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > MSXML XSD подключение зависимостей


Автор: -Сергей- 16.2.2017, 11:47
Всем привет!
Уже сутки мучаюсь все никак не могу выполнить реализацию данной штуки. 
Делаю валидатор xml файлов xsd схеме. Загвоздка в том, что в xsd могут содержаться ссылки на другие xsd
Код

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:include schemaLocation="ddd.xsd"/>
    <xs:include schemaLocation="ttt.xsd"/>
</xs:schema>

которые тоже могут содержать ссылки и так далее.
Так вот. Надо пробежаться по всем этим файлам и сделать их список начиная с последнего.

Не могу составить алгоритм как все это провернуть.

Например есть 5 файлов
1-й имеет ссылку на 2 и 3
2-й на 4
3-й на 5-й
а 4-й и 5-й не имеют ссылок

Открываем 1-й находим ссылку на 2-й, открываем 2-й находим ссылку на 4 открываем 4-й, видим что ссылок нет ставим его в начало.
закрываем 4-й идем дальше по 2-му смотрим что ссылок нет, ставим его дальше в список, продолжаем смотреть 1-й и находим ссылку на 3-й и так далее.
В итоге у нас должен получиться такой порядок 4,2,5,3,1

Добавлено @ 11:50
Админы, удалите дубль. Сайт во время отправки таймаут показывал.

Автор: bems 17.2.2017, 00:01
Цитата(-Сергей- @  16.2.2017,  11:47 Найти цитируемый пост)
Так вот. Надо пробежаться по всем этим файлам и сделать их список начиная с последнего.
ну если именно это, то это называется "топологическая сортировка"
вот https://ru.wikipedia.org/wiki/%D0%A2%D0%BE%D0%BF%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0

Автор: -Сергей- 17.2.2017, 03:57
Всем спасибо! Вопрос решен с помощью рекурсии.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)