XSD-производные ограничения / перечисления атрибутов - PullRequest
1 голос
/ 08 марта 2012

У меня есть XSD-файл (схема схемы для XML-файла), в котором есть ограничения / перечисления для определенных полей.Например, мой атрибут называется «Автомобиль», и допускаются только определенные значения («Хонда», «Форд», «GMC», «Тойота» и т. Д.)Модель DOM XML в VBA (или любом другом языке) для получения ограничений («Honda», «Ford», «GMC», «Toyota» и т. Д.) Для атрибута / узла («Car») из XSD?

Идеальное конечное состояние / моя цель - написать функцию после загрузки XSD / Map, в которой местоположение xpath узла передается в строковом формате (например, "/ Root / Car"), а строковый массив возвращается сдопустимые поля для этого узла!

Любое понимание или ссылки приветствуются!

Спасибо.

1 Ответ

1 голос
/ 09 марта 2012

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

Единственная библиотека, которую мне удалось найти, которая делает что-то подобное, это: http://xpath -on-schema.sourceforge.net / , но я на самом деле не пробовал, потому что это Java и я человек .NET.

Если у вас все в порядке с разработкой чего-либо в .NET, я бы предложил использовать класс XmlSchema:

using (FileStream fs = new FileStream(xsdPath, FileMode.Open, FileAccess.Read)) {
   XmlSchema schema = XmlSchema.Read(fs, null);
}

а затем существуют относительно простые в использовании методы и классы для доступа ко всему, что вам нужно в схеме - например, существует класс XmlSchemaSimpleTypeRestriction, соответствующий ограничению на простой тип, такой как строка, который содержит в свойстве Facets список допустимых значений (или других ограничений).

...